如何在一个lin中分配变量中的for循环值

2024-10-01 00:17:36 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我有下面的代码示例;同时迭代多个与枚举相结合的序列,将值赋给元组变量,然后输出它。在

def PairValuesWithIndexToTuples(self,val1,val2):
  t =()
  for i, (a,b) in enumerate(zip(val1,val2)):
    t += (i,a,b)
  return t

如果可能的话,我想实现的目标是: 我一直在四处寻找,但还没有找到一个解决方案,可以从上述方法中获得我的结果:

^{pr2}$

或者

return t+= for i, (a,b) in enumerate(zip(val1,val2))

Tags: 代码inself示例forreturndef序列
3条回答

因为这更清楚了。。。在

sum(((i, a, b) for i, (a,b) in enumerate(zip(val1, val2))), ())

示例:

^{pr2}$

您可以创建一个生成器表达式来创建元组,然后从该表达式中生成^{}以获得展平的结果

from itertools import chain

tuple(chain.from_iterable((i, a, b) for i, (a,b) in enumerate(zip(val1,val2))))

作为一个多行函数,这看起来更好

^{pr2}$

编辑:

我最初的代码(一个元组的元组)是

def pair_with_index(val1, val2):
    return tuple((i, a, b) for i, (a,b) in enumerate(zip(val1,val2)))

pair_with_index([1, 2, 3], [4, 5, 6])
# ((0, 1, 4), (1, 2, 5), (2, 3, 6))

也许你在找一个扁平化的列表或者一个扁平化的元组?你的问题不清楚,所以我就把所有的都包括进去。在

In [79]: val1 = [1,2,3]

In [80]: val2=[4,5,6]

In [81]: [(i, a, b) for i, (a,b) in enumerate(zip(val1,val2))]
Out[81]: [(0, 1, 4), (1, 2, 5), (2, 3, 6)]

In [82]: [k for j in [(i, a, b) for i, (a,b) in enumerate(zip(val1,val2))] for k in j]
Out[82]: [0, 1, 4, 1, 2, 5, 2, 3, 6]

In [84]: tuple(k for j in [(i, a, b) for i, (a,b) in enumerate(zip(val1,val2))] for k in j)
Out[84]: (0, 1, 4, 1, 2, 5, 2, 3, 6)

相关问题 更多 >