Доступ к элементам из двух подсписков без использования вложенных для l oop in python - PullRequest
0 голосов
/ 11 апреля 2020

например:

list = [[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]]

и я хочу сравнивать первый элемент из двух последовательных подсписков в каждой итерации для l oop.
Как мне записать для l oop ?

Я пробовал следующий код:

for x in list:
    print(x[0])
    print(x+1[0])

Я знаю, что использование (x+1[0]) совершенно нелогично. Но что я должен использовать в этом месте? Какие-либо предложения? Как сравнение (любой тип математического сравнения) 1-ые элементы list1 & list2, list3 & list4.

Ответы [ 3 ]

1 голос
/ 11 апреля 2020

Вы можете использовать zip() для объединения последовательных списков, передавая фрагменты в zip. Чтобы соединить их со смещением, например: [0, 1], [1, 2], [2, 3], вы можете использовать:

zip(l, l[1:])

Чтобы объединить их в пары (вместо повторения последнего, такого как [0, 1], [2, 3]), вы можете использовать:

zip(l[::], [1:1])

В вашем примере это будет выглядеть так:

l = [[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]]

for l1, l2 in zip(l[::2], l[1::2]):
    print(l1[0], l2[0])

Отпечатки:

1 5
9 13
1 голос
/ 11 апреля 2020

Попробуйте:

for x in list1:
    for y in list1:
        if x[0] == y[0]:
            print(x[0],y[0])

Теперь, если вы не хотите сравнивать одни и те же элементы (что делает приведенный выше код):

for x in list1:
    for y in [i for i in list1 if i!=x]:
        if x[0] == y[0]:
            print(x[0],y[0])

Или вы можете напечатать как:

for x in list1:
    for y in [i for i in list1 if i!=x]:
        if x[0] == y[0]:
            print(x ,"and", y , 'have the same elements first')

Здесь:

list1 = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
0 голосов
/ 11 апреля 2020

следующий код будет генерировать первый элемент из каждого подсписка. Настройте его в соответствии с вашими потребностями

lst = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]

for i in range(len(lst[0])):
    for j in range(len(lst)):
        print(lst[j][i], end=" ")
    print()
...