我可以使用单个索引在一个循环中迭代两个列表的逻辑,例如,使用索引[0,0]
,[0,1]
,[1,0]
,[1,1]
获取2x2迭代1
2
3
4
?到目前为止,这是我最好的尝试:
numbers_list = [[1,2],[3,4]]
letters_list = ['a', 'b', 'c', 'd']
for i in [1,2,3,4]:
indx1, = i%2,
indx2 = i % 2 + i-2
print indx1, indx2
print numbers_list[indx1][indx2], letters_list[i]
期望的输出是
0 a
1 b
2 c
3 d
答案 0 :(得分:1)
只是嵌套循环。
lists = [[1,2],[3,4]]
for i in range(len(lists)):
sublist = lists[i]
for j in range(len(sublist)):
element = sublist[j]
print element
这将给出: 1 2 3 4
您的方法可行,但您必须知道列表的长度。此外,您的所有列表都必须具有相同的长度,而使用此方法,它们可能会有所不同。
答案 1 :(得分:1)
如果您不反对使用像enumerate()这样的内置功能,这可能会有效:
numbers_list = [[1,2],[3,4]]
letters_list = ['a', 'b', 'c', 'd']
for i, n in enumerate([1,2,3,4]):
print i, letters_list[i]
输出:
0 a
1 b
2 c
3 d
答案 2 :(得分:1)
由于我不知道您的列表的generic structure
,我将接受您提供的lists
。所以在single loop
:
for i in range(4):
div,rem = divmod(i,2)
print(numbers_list[div][rem],letters_list[i])
所以,我们得到:
IN : letters_list = ['a', 'b', 'c', 'd']
IN : numbers_list = [[1,2],[3,4]]
OUT : 1 a
2 b
3 c
4 d
答案 3 :(得分:0)
使用MacProvider.generateKey();
。
对于2x3列表:
itertools.product
如果您只想将列表展平为包含(index_1,index_2,item)的元组列表,则可以执行嵌套列表解析:
from itertools import product
numbers_list = [[1, 2, 3], [3, 4, 5]]
for i, j in itertools.product(range(2), range(3)):
print("indices:")
print(i)
print(j)
print("Item:")
print(numbers_list[i][j])
答案 4 :(得分:0)
如果您希望能够在单个顶级循环中处理任何形状的双深嵌套列表,您可以先定义辅助迭代器函数(您只需要执行一次):
def nest_iter(x):
for i, a in enumerate(x):
for j, b in enumerate(a):
yield i, j, b
完成后,您可以在代码的其余部分中使用它,如下所示:
numbers_list = [[1, 2], [3, 4, 5]]
for i, j, b in nest_iter(numbers_list):
print i, j, b
输出结果为:
0 0 1
0 1 2
1 0 3
1 1 4
1 2 5
在此示例中,有两个不同长度的子列表。