2015-05-28 12 views
4

У меня есть вложенный список, A = [[1, 2, 3], [5, 2, 7], [4, 8, 9]]. Я хочу добавить цифры 1, 2, 3 в list A, чтобы быть A = [[1, 2, 3, 1], [5, 2, 7, 2], [4, 8, 9, 3]] и т. Д. (Это только более короткая версия). Я попробовал то же самое, используя код, который я написал:Добавление целых чисел в вложенные списки - Python

i = 0 
j = 0 
#number_nests = number of nested lists 
for i in range(0, number_nests): 
    for j in A: 
     j.append(i) 

print(A) 

Это выход, который я получаю, так как я новичок, я немного застрял: [[1, 90, 150, 0, 1, 2, 3], [2, 100, 200, 0, 1, 2, 3], [4, 105, 145, 0, 1, 2, 3], [3, 110, 190, 0, 1, 2, 3]]. Я пытаюсь сделать это без numpy.

+0

не нуждается в 'диапазоне (0, number_nests),' 0' по умолчанию '' start' в range'.So просто 'диапазон (number_nests)' – itzMEonTV

ответ

3
A = [[1, 2, 3], [5, 2, 7], [4, 8, 9]] 
i=1 
for val in A: 
    val.append(i) 
    i += 1 
3

Просто перебирать внешний список наряду с индексами, используя enumerate:

for i, elem_list in enumerate(A, start=1): 
    elem_list.append(i) 
3

Вы можете использовать enumerate встроенную функцию с параметром запуска в 1, чтобы получить текущий индекс.

A = [[1, 2, 3], [5, 2, 7], [4, 8, 9]] 

print([val+[i] for i, val in enumerate(A, 1)]) 

Использование map встроенной функции

В Python 2.x

print map(lambda x,y: x+[y], A, range(1, len(A)+1)) 

В Python 3.x

print(list(map(lambda x,y: x+[y], A, range(1, len(A)+1)))) 
-1

Вам нужно всего лишь один цикл в добавьте по одному номеру в каждый список в A:

for i in range(1, len(A)+1): 
    A[i].append(i) 

Примечание: диапазон не должен начинаться с 1

1
A = [[1, 2, 3], [5, 2, 7], [4, 8, 9]] 
B = [1, 2, 3] 
print [A[i]+[B[i]] for i in range(len(A))] 
#Output[[1, 2, 3, 1], [5, 2, 7, 2], [4, 8, 9, 3]] 
Смежные вопросы