繁体   English   中英

如何调用枚举 function 的元组?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM