[英]How to call a tuple of the enumerate function?
我正在尝试运行 for 循环以编辑数据框的索引。 不过总的来说,我似乎无法理解enumerate
function 是如何工作的。
比如说我有一个简单的列表:
eg = ["A","B","C","D","E"]
for i,j in enumerate(eg):
print(i,j)
这将返回一个简单易懂的 output:
0 A
1 B
2 C
3 D
4 E
因此, i
是列表中的计数, j
是实际值。 但是假设我想运行一些更复杂的东西,如下所示:
indx = []
for i,j in enumerate(eg):
if i < 4:
indx.append(str(j[i]) + str(j[i+1]))
else:
next
print(indx)
本质上,我想以一种有意义的方式连接连续的条目,这样上面代码所需的 output(如果我真的知道我在做什么)会是这样的:
indx = ['AB', 'BC', 'CD', 'DE']
但理想情况下,for 循环将能够连接这些字母,每次增加一个距离,即:
indx = ['AB', 'BC', 'CD', 'DE', 'AC', 'BD', 'CE', 'AD', 'BE', 'AE']
不确定我要问的是不是很简单,我是否遗漏了一些明显的东西,或者如果像我上面那样手动指定列表,我是否会更容易找到 go。
非常感谢任何帮助:)
这里 for 循环中使用的j
是列表的元素,所以你不应该像j[i]
那样索引它。 在 for 循环内连接时使用indx[i]
和indx[i+1]
。
我想您需要的是eg
中项目的组合。 您可以使用itertools
package 的combinations
方法,如下所示:
from itertools import combinations
eg = ["A","B","C","D","E"]
[''.join(m) for m in combinations(eg,2)]
output:
['AB', 'AC', 'AD', 'AE', 'BC', 'BD', 'BE', 'CD', 'CE', 'DE']
如果顺序很重要,则需要手动执行。 您可以像这样在嵌套循环中执行此操作:
stack = []
step_max = len(eg)
for j in range(1,step_max):
for i in range(len(eg)-j):
stack.append(str(eg[i])+str(eg[i+j]))
print(stack)
output:
['AB', 'BC', 'CD', 'DE', 'AC', 'BD', 'CE', 'AD', 'BE', 'AE']
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.