Hoe een array van nullen te declareren in python (of een array van een bepaalde grootte)

Ik probeer een histogram van tellingen te maken… dus ik maak buckets.
Ik weet dat ik er gewoon doorheen kan gaan en een aantal nullen kan toevoegen, bijvoorbeeld iets in de trant van:

buckets = []
for i in xrange(0,100):
    buckets.append(0)

Is er een elegantere manier om dit te doen? Ik heb het gevoel dat er een manier moet zijn om een ​​array van een bepaalde grootte te declareren.

Ik weet dat numpy numpy.zerosheeft, maar ik wil de meer algemene oplossing


Antwoord 1, autoriteit 100%

buckets = [0] * 100

Voorzichtig – deze techniek generaliseert niet naar multidimensionale arrays of lijsten met lijsten. Wat leidt tot de Lijst met lijstenwijzigingen die onverwacht in sublijsten worden weergegevenprobleem


Antwoord 2, autoriteit 29%

Voor de volledigheid: om een ​​multidimensionale lijst met nullen in python te declareren, moet je een lijstbegrip als dit gebruiken:

buckets = [[0 for col in range(5)] for row in range(10)]

om het delen van referenties tussen de rijen te voorkomen.

Dit ziet er onhandiger uit dan de code van chester1000, maar is essentieel als de waarden later moeten worden gewijzigd. Zie de Veelgestelde vragen over Pythonvoor meer details.


Antwoord 3, autoriteit 5%

Je kunt een listvermenigvuldigen met een geheel getal nom de listnkeer te herhalen:

buckets = [0] * 100

Antwoord 4, autoriteit 4%

Gebruik dit:

bucket = [None] * 100
for i in range(100):
    bucket[i] = [None] * 100

OF

w, h = 100, 100
bucket = [[None] * w for i in range(h)]

Beiden zullen de juiste lege multidimensionale bucketlist 100×100 weergeven


Antwoord 5, autoriteit 4%

gebruik numpy

import numpy
zarray = numpy.zeros(100)

En gebruik dan de Histogrambibliotheekfunctie


Antwoord 6

De vraag zegt “Hoe een array van nullen te declareren …” maar dan verwijst de voorbeeldcode naar de Python-lijst:

buckets = []   # this is a list

Als iemand echter een array wil initialiseren, stel ik voor:

from array import array
my_arr = array('I', [0] * count)

De Python-purist zou kunnen beweren dat dit niet pythonicis en suggereren:

my_arr = array('I', (0 for i in range(count)))

De pythonic-versie is erg traag en als je een paar honderd arrays moet initialiseren met duizenden waarden, is het verschil behoorlijk merkbaar.


Antwoord 7

De eenvoudigste oplossing zou zijn

"\x00" * size # for a buffer of binary zeros
[0] * size # for a list of integer zeros

Over het algemeen zou u meer pythonische code moeten gebruiken, zoals lijstbegrip (in uw voorbeeld: [0 for unused in xrange(100)]) of string.joingebruiken voor buffers.


Antwoord 8

Afhankelijk van wat u met de gegevens gaat doen nadat deze zijn verzameld, kan collections.defaultdict(int) nuttig zijn.


Antwoord 9

Nou, ik zou je graag willen helpen door een voorbeeldprogramma en de uitvoer ervan te posten

Programma:-

t=input("")
x=[None]*t
y=[[None]*t]*t
for i in range(1,t+1):
      x[i-1]=i;
      for j in range(1,t+1):
            y[i-1][j-1]=j;
print x
print y

Uitvoer:-

2
[1, 2]
[[1, 2], [1, 2]]

Ik hoop dat dit een heel basaal concept van u met betrekking tot hun verklaring opheldert. Om ze te initialiseren met een aantal andere specifieke waarden, zoals ze te initialiseren met 0..je kunt ze declareren als :

x=[0]*10

Hopelijk helpt het..!! 😉


Antwoord 10

Als u meer kolommen nodig heeft:

buckets = [[0., 0., 0., 0., 0.] for x in range(0)]

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Other episodes