在 python 中不使用嵌套 for 循环访问两个子列表中的元素

Access elements from two sublist without using a nested for loop in python

例如:

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

并且我想在 for 循环的每次迭代中比较两个连续子列表的第一个元素。
for循环应该怎么写?

我试过以下代码:

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

我知道使用 (x+1[0]) 是完全不合逻辑的。但是我应该在这个地方使用什么?有什么建议么? 就像比较(任何类型的数学比较)list1 和 list2、list3 和 list4 的第一个元素。

尝试:

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]]

以下代码将从每个子列表中生成第一个元素。根据您的需要进行调整

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

您可以使用 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