Двумерный массив в python
Я хочу знать, как объявить двумерный массив в Python.
arr = [[]]
arr[0].append("aa1")
arr[0].append("aa2")
arr[1].append("bb1")
arr[1].append("bb2")
arr[1].append("bb3")
Первые два задания работают нормально. Но когда я пытаюсь сделать, arr [1].append( "bb1" ), я получаю следующую ошибку:
IndexError: индекс индекса вне диапазона.
Я делаю что-то глупо, пытаясь объявить 2-мерный массив
[править]:
но я не знаю, нет. элементов в массиве (обе строки и столбцы).
Ответы
Ответ 1
Вы не "объявляете" массивы или что-либо еще в python. Вы просто назначаете (новую) переменную. Если вам нужен многомерный массив, просто добавьте новый массив в качестве элемента массива.
arr = []
arr.append([])
arr[0].append('aa1')
arr[0].append('aa2')
или
arr = []
arr.append(['aa1', 'aa2'])
Ответ 2
В Python нет многомерных массивов, у вас есть список, содержащий другие списки.
>>> arr = [[]]
>>> len(arr)
1
То, что вы сделали, объявляет список, содержащий один список. Таким образом, arr[0]
содержит список, но arr[1]
не определен.
Вы можете определить список, содержащий два списка, следующим образом:
arr = [[],[]]
Или для определения более длинного списка, который вы можете использовать:
>>> arr = [[] for _ in range(5)]
>>> arr
[[], [], [], [], []]
Что вы не должны делать:
arr = [[]] * 3
Поскольку это помещает тот же список во все три места в списке контейнеров:
>>> arr[0].append('test')
>>> arr
[['test'], ['test'], ['test']]
Ответ 3
То, что вы используете здесь, это не массивы, а списки (списков).
Если вам нужны многомерные массивы в Python, вы можете использовать массивы Numpy. Вам нужно знать форму заранее.
Например:
import numpy as np
arr = np.empty((3, 2), dtype=object)
arr[0, 1] = 'abc'
Ответ 4
Вы пытаетесь добавить второй элемент в массив, но его не существует.
Создайте его.
arr = [[]]
arr[0].append("aa1")
arr[0].append("aa2")
arr.append([])
arr[1].append("bb1")
arr[1].append("bb2")
arr[1].append("bb3")
Ответ 5
При построении многомерных списков в Python я обычно использую нечто похожее на решение ThiefMaster, но вместо добавления элементов в индекс 0
, а затем добавляя элементы к индексу 1
и т.д., я всегда использую index -1
который автоматически является индексом последнего элемента в массиве.
то есть.
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")
создаст 2D-массив (фактически список списков), который вы после.
Ответ 6
Мы можем динамически создавать многомерный массив следующим образом:
Создайте 2 переменных для чтения x и y со стандартного ввода:
print("Enter the value of x: ")
x=int(input())
print("Enter the value of y: ")
y=int(input())
Создайте массив списка с начальными значениями, заполненными 0 или чем угодно, используя следующий код
z=[[0 for row in range(0,x)] for col in range(0,y)]
создает количество строк и столбцов для данных вашего массива.
Чтение данных со стандартного ввода:
for i in range(x):
for j in range(y):
z[i][j]=input()
Отобразите результат:
for i in range(x):
for j in range(y):
print(z[i][j],end=' ')
print("\n")
или использовать другой способ отображения выше динамически созданного массива,
for row in z:
print(row)
Ответ 7
a = [[] for index in range(1, n)]
Ответ 8
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")
Ответ 9
Для программирования compititve
1) Для ввода значения в 2D-массиве
row=input()
main_list=[]
for i in range(0,row):
temp_list=map(int,raw_input().split(" "))
main_list.append(temp_list)
2) Для отображения 2D-массива
for i in range(0,row):
for j in range(0,len(main_list[0]):
print main_list[i][j],
print