【问题标题】:Multiple variables to iterate over a list迭代列表的多个变量
【发布时间】:2021-03-16 01:36:41
【问题描述】:

我希望有多个迭代器在 for 循环中遍历同一个列表,类似于

x = [1,2,3,4]
Triples = []
for i,j,k in range(len(x)):
    print(i,j,k)

结果:

0 0 0
1 1 1
...

这在 python 中可行吗?

我的想法是让变量 i 作为 j 和 k 的参考。

【问题讨论】:

  • 你想用这个实现什么?看来你可以做print(i,i,i),不是吗?
  • 好像XY problem
  • 你能对for i... in...:做同样的事情,然后j = k = i
  • 您不妨使用单个“迭代器”i 并在循环内执行j = k = i
  • 所以你不能像那样初始化一个for循环?

标签: python python-3.x


【解决方案1】:

你的意思是这样的吗?

import itertools
x = range(1, 5)
print(x)
print(list(itertools.combinations(x, 3)))
# [(1, 2, 3), (1, 2, 4), (1, 3, 4), (2, 3, 4)]

【讨论】:

  • 是的,这实际上是我想要的最终结果,但我想尝试在不使用 itertools.combinations 函数帮助我学习的情况下解决这个问题。
  • @Jack,上面有搜索框,sometimes很有用。
  • @OlvinR​​oght 请解释一下“搜索框”是什么,您的说明不清楚。
【解决方案2】:

你可以试试这个:

x = [1, 2, 3, 4]

print("elements")
for i, j, k in zip(x, x, x):
    print(i, j, k)

print("\nindexes")
for i, j, k in zip(range(len(x)), range(len(x)), range(len(x))):
    print(i, j, k)

输出:

elements
1 1 1
2 2 2
3 3 3
4 4 4

indexes
0 0 0
1 1 1
2 2 2
3 3 3

【讨论】:

  • 谢谢,这正是我的想法。欣赏答案。有没有办法使用相同的列表来实现这一点?
猜你喜欢
  • 1970-01-01
  • 2019-05-05
  • 2017-11-03
  • 1970-01-01
  • 1970-01-01
  • 2019-09-02
  • 2016-11-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多