假设我有一个列表:
nums = [3,3,1,5,6]
我想使用列表理解来遍历具有两个变量的列表,并在循环时报告变量的索引。我在下面有以下代码。
indices = [print(nums.index(x),nums.index(y)) for x in nums for y in nums]
我遇到的问题是输出:
0 0
0 0
0 2
0 3
0 4
0 0
0 0
0 2
0 3
0 4
2 0
2 0
2 2
2 3
2 4
3 0
3 0
3 2
3 3
3 4
4 0
4 0
4 2
4 3
您将注意到,索引“ 1”不会被打印,因为nums.index(x)仅报告找到的元素的第一个实例,而不报告元素本身的位置。
我如何才能正确打印结果?作为所需输出的示例,我使所有值唯一,然后重新运行了代码。
0 0
0 1
0 2
0 3
0 4
1 0
1 1
1 2
1 3
1 4
2 0
2 1
2 2
2 3
2 4
3 0
3 1
3 2
3 3
3 4
4 0
4 1
4 2
4 3
4 4
答案 0 :(得分:2)
您正在寻找枚举,当您遍历时,它将为您提供索引位置作为变量。
nums = [3,3,1,5,6]
indices = [print(i,z) for i,x in enumerate(nums) for z,y in enumerate(nums)]