web-dev-qa-db-fra.com

Tableau à deux dimensions en python

Je veux savoir comment déclarer un tableau à deux dimensions en Python.

arr = [[]]

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

Les deux premières missions fonctionnent bien. Mais lorsque j'essaie de le faire, arr[1].append("bb1"), j'obtiens l'erreur suivante:

IndexError: list index out of range.

Est-ce que je fais quelque chose de stupide en essayant de déclarer le tableau 2D?

Modifier:
mais je ne connais pas le nombre d'éléments dans le tableau (lignes et colonnes). 

37
SyncMaster

Vous ne "déclarez" pas les tableaux ou quoi que ce soit d'autre en python. Vous affectez simplement à une (nouvelle) variable. Si vous voulez un tableau multidimensionnel, ajoutez simplement un nouveau tableau en tant qu'élément de tableau.

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

ou

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

Il n’existe pas de tableaux multidimensionnels en tant que tels en Python; vous avez une liste contenant d’autres listes.

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

Ce que vous avez fait est de déclarer une liste contenant une liste unique. Donc, arr[0] contient une liste mais arr[1] n'est pas défini.

Vous pouvez définir une liste contenant deux listes comme suit:

arr = [[],[]]

Ou pour définir une liste plus longue, vous pouvez utiliser:

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

Ce que vous ne devriez pas faire est la suivante:

arr = [[]] * 3

Comme ceci place la même liste aux trois endroits de la liste de conteneurs:

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

Ce que vous utilisez ici ne sont pas des tableaux, mais des listes (de listes).

Si vous voulez des tableaux multidimensionnels en Python, vous pouvez utiliser des tableaux Numpy. Vous devez connaître la forme à l'avance.

Par exemple:

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

Vous essayez d’ajouter au deuxième élément d’un tableau, mais il n’existe pas.

arr = [[]]

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

Lors de la construction de listes multidimensionnelles en Python, j'utilise généralement quelque chose de similaire à la solution de ThiefMaster, mais plutôt que d'ajouter des éléments à index 0, puis d'ajouter des éléments à index 1, etc., j'utilise toujours index -1, qui est automatiquement l'indice du dernier dans le tableau.

c'est à dire.

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")

produira le tableau 2D (en fait une liste de listes) que vous recherchez.

2
Lurchman

Nous pouvons créer un tableau multidimensionnel dynamiquement comme suit,

Créez 2 variables pour lire x et y à partir de l'entrée standard:

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

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

Créez un tableau de liste avec les valeurs initiales remplies avec 0 ou quoi que ce soit en utilisant le code suivant

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

crée un nombre de lignes et de colonnes pour vos données de tableau.

Lire les données de l'entrée standard:

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

Afficher le résultat:

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

ou utilisez un autre moyen pour afficher le tableau créé ci-dessus de manière dynamique est,

for row in z:
     print(row)
2
PK4Android
a = [[] for index in range(1, n)]
1
user306080

Vous pouvez d'abord ajouter des éléments au tableau initialisé, puis pour des raisons pratiques, vous pouvez le convertir en tableau numpy.

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)
1
Sammy

Pour une programmation compétitive

1) Pour entrer la valeur dans un tableau 2D

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

2) Pour afficher un tableau 2D

for i in range(0,row):
    for j in range(0,len(main_list[0]):
        print main_list[i][j],
        print
0
Raj
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")
0
Rohith Rangaraju