Tweedimensionale array in Python

Ik wil weten hoe je een tweedimensionale array in Python moet declareren.

arr = [[]]
arr[0].append("aa1")
arr[0].append("aa2")
arr[1].append("bb1")
arr[1].append("bb2")
arr[1].append("bb3")

De eerste twee opdrachten werken prima. Maar wanneer ik probeer te doen, arr[1].append("bb1"), ik krijg de volgende foutmelding:

IndexError: list index out of range.

doe ik iets dwaas in het proberen om de 2-D-array te verklaren?

bewerken:

, maar ik weet niet het aantal elementen in de array (beide rijen en kolommen).


Antwoord 1, Autoriteit 100%

U “declareren” arrays of iets anders in Python. U wijst eenvoudig aan een (nieuwe) variabele toe. Als u een multidimensionale array wilt, voegt u eenvoudig een nieuwe array toe als een array-element.

arr = []
arr.append([])
arr[0].append('aa1')
arr[0].append('aa2')

of

arr = []
arr.append(['aa1', 'aa2'])

Antwoord 2, Autoriteit 86%

Er zijn geen multidimensionale arrays als zodanig in Python, wat je hebt is een lijst met andere lijsten.

>>> arr = [[]]
>>> len(arr)
1

Wat u hebt gedaan, verklaart een lijst met een enkele lijst. Dus arr[0]bevat een lijst, maar arr[1]is niet gedefinieerd.

U kunt een lijst definiëren met twee lijsten als volgt:

arr = [[],[]]

Of om een langere lijst te maken die je zou kunnen gebruiken:

>>> arr = [[] for _ in range(5)]
>>> arr
[[], [], [], [], []]

Wat u niet moetdoen, is dit:

arr = [[]] * 3

Omdat dit dezelfde lijstop alle drie de plaatsen in de containerlijst plaatst:

>>> arr[0].append('test')
>>> arr
[['test'], ['test'], ['test']]

Antwoord 3, autoriteit 27%

Wat je hier gebruikt zijn geen arrays, maar lijsten (van lijsten).

Als u multidimensionale arrays in Python wilt, kunt u Numpy-arrays gebruiken. Je moet de vorm van tevoren weten.

Bijvoorbeeld:

import numpy as np
 arr = np.empty((3, 2), dtype=object)
 arr[0, 1] = 'abc'

Antwoord 4, autoriteit 6%

U probeert toe te voegen aan het tweede element in de array, maar het bestaat niet.
Maak het.

arr = [[]]
arr[0].append("aa1")
arr[0].append("aa2")
arr.append([])
arr[1].append("bb1")
arr[1].append("bb2")
arr[1].append("bb3")

Antwoord 5, autoriteit 4%

We kunnen als volgt dynamisch een multidimensionale array maken,

Maak 2 variabelen om x en y uit standaardinvoer te lezen:

print("Enter the value of x: ")
 x=int(input())
 print("Enter the value of y: ")
 y=int(input())

Maak een array van lijsten met beginwaarden gevuld met 0 of iets anders met behulp van de volgende code

z=[[0 for row in range(0,x)] for col in range(0,y)]

creëert aantal rijen en kolommen voor de array van gegevens.

Data lezen van de standaard invoer:

for i in range(x):
         for j in range(y):
             z[i][j]=input()

Geef het Resultaat:

for i in range(x):
         for j in range(y):
             print(z[i][j],end=' ')
         print("\n")

of een andere middel om de hierboven dynamisch gegenereerde array,

for row in z:
     print(row)

Antwoord 6, Autoriteit 3%

Bij de bouw van multi-dimensionale lijsten in Python ik meestal iets wat lijkt op ThiefMaster’s oplossing, maar in plaats van het toevoegen van items te indexeren 0, dan voegen te indexeren items 1, etc. ik gebruik altijd index -1die automatisch de index van het laatste item in de array.

d.w.z.

arr = []
arr.append([])
arr[-1].append("aa1")
arr[-1].append("aa2")
arr.append([])
arr[-1].append("bb1")
arr[-1].append("bb2")
arr[-1].append("bb3")

zal de 2D-array (in feite een lijst van lijsten) te produceren u zoekt.


Antwoord 7, Autoriteit 3%

U kunt eerst voegt elementen aan de geïnitialiseerde array en dan voor het gemak, kunt u deze omzetten in een numpy array.

import numpy as np
a = [] # declare null array
a.append(['aa1']) # append elements
a.append(['aa2'])
a.append(['aa3'])
print(a)
a_np = np.asarray(a) # convert to numpy array
print(a_np)

Antwoord 8

a = [[] for index in range(1, n)]

Antwoord 9

Voor compititve programmeren

1) Voor invoer de waarde in een 2D-array

row=input()
main_list=[]
for i in range(0,row):
    temp_list=map(int,raw_input().split(" "))
    main_list.append(temp_list)

2) voor het weergeven van 2D-array

for i in range(0,row):
    for j in range(0,len(main_list[0]):
        print main_list[i][j],
        print

Antwoord 10

De bovenstaande methode werkte niet voor mij voor een voor lus, waar ik gegevens van een 2D-array naar een nieuwe array onder een wil overbrengen onder een als de voorwaarde. Deze methode zou werken

a_2d_list = [[1, 2], [3, 4]]
a_2d_list.append([5, 6])
print(a_2d_list)
OUTPUT - [[1, 2], [3, 4], [5, 6]]

Antwoord 11

x=3#rows
y=3#columns
a=[]#create an empty list first
for i in range(x):
    a.append([0]*y)#And again append empty lists to original list
    for j in range(y):
         a[i][j]=input("Enter the value")

Antwoord 12

In mijn geval moest ik dit doen:

for index, user in enumerate(users):
    table_body.append([])
    table_body[index].append(user.user.id)
    table_body[index].append(user.user.username)

Uitgang:

[[1, 'john'], [2, 'bill']]

Other episodes