在 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
例如:
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