Как перебирать элементы подсписка - PullRequest
0 голосов
/ 22 сентября 2019

Надеюсь, вы поможете мне с этим:

previous=[[0, 0, 1, 1], [0, 0, 0, 0], [0, 0, 1, 2], [0, 0, 1, 2], [0, 0, 1, 1], [0, 1, 1, 2], [0, 1, 1, 1], [0, 0, 1, 2], [0, 1, 1, 2], [0, 0, 0, 0]]

type(previous)
Out[67]: list

previous[0][-1]
Out[66]: 1

previous[1][-1]
Out[65]: 0

for p in previous:
    print(p)

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

Мой вопрос, мне нужно получить значение 3 для каждого элемента в подсписке и добавить его для создания другого списка.

Результат должен быть:

[1,0,1,1,1,1,1,1,1,0]

Я пробовал это, но безуспешно:

mylist=[]
for p in previous:
    for x in p:
        mylist.append(p[x][-1])
        print(mylist)

и:

for p in previous:
    for x in p:
        print ([p[x]])

Ответы [ 2 ]

2 голосов
/ 22 сентября 2019

p - это подсписок, вам не нужно повторять его снова с помощью for x in p:, чтобы получить третий элемент (поэтому ваш код на самом деле вызывает IndexError при попытке индексировать подсписок p, если x выходит за пределы и будет поднимать TypeError при попытке использовать p[x][-1] для индексации числа на p[x]), все же, p[-1] - последний элемент (четвертый в вашем случае), выследует либо использовать положительную индексацию:

p[2]  #  the third element

, либо использовать отрицательную индексацию, чтобы получить следующий за последним элемент:

p[-2]

Но если списки должны расти больше, положительная индексациялучше, поскольку на него не будут влиять элементы, добавленные в конец списка.

Вы также можете написать понимание списка вместо for loop + append:

mylist = [p[2] for p in previous]

print(mylist)

Выход:

[1, 0, 1, 1, 1, 1, 1, 1, 1, 0]
1 голос
/ 22 сентября 2019

В вашем цикле p это подсписок.Первый раз в цикле p это

[0, 0, 1, 1]

Python выполняет индексацию с нуля (элемент first всегда имеет индекс 0).Так что p[0] это первый элемент.Третий элемент будет p[2].

Если вы используете отрицательные индексы, -1 дает последний элемент, а -2 - предпоследний или предпоследний элемент.

Чтобы изменить вашРешение для работы, вы можете удалить внутренний цикл.Тебе это не нужно.У вас уже есть список.

mylist=[]
for p in previous:
    mylist.append(p[2])

print(mylist)
...