对列表中的元素-Python

时间:2018-06-26 02:58:29

标签: python python-3.x

给出一个列表以生成元组,例如:

lst =  ['d', '112', 'b', 'c', 'i', 'a', 'e']

输出:

[('d','112'), ('d','b'), ('d','c'), ('d','i'), ..., ('a','e')]

谢谢。

2 个答案:

答案 0 :(得分:1)

尝试

import itertools

lst =  ['d', '112', 'b', 'c', 'i', 'a', 'e']

for comb in itertools.combinations(lst, 2):
    print(comb)

答案 1 :(得分:0)

如果想使代码易于阅读,嵌套循环是最经典的解决方案。

results = []
for i in range(len(lst)):
    for j in range(i + 1, len(lst)):
        results.append((lst[i], lst[j]))

如果要使其更具Python风格,您应该知道如何使用zip函数。

results = []
for i in range(len(lst)):
    results += list(zip([lst[i]] * (len(lst) - i - 1), lst[i + 1:]))

如果您想疯了,要保存行号,请尝试使用递归lambda函数。

f = lambda x: [] if len(x) <= 1 else list(zip([x[0]] * (len(x) - 1), x[1:])) + f(x[1:])

然后f(lst)是您想要的。

无论如何,请记住,无论代码多么短,时间复杂度都保持不变。如果您真的不需要超级短代码,则使用简单的代码可以更好地进行长期维护。