python中列表上的组合

2024-03-28 10:02:10 发布

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

因此,我在python中得到了如下列表:

[1,2,3,4]

我想要数字3和每个数字之间的组合如下:

[(1,3),(2,3),(3,4)]

有什么我可以用的吗?我知道有一种叫做itertools的东西,但我有点新,所以我不知道如何使用它

谢谢大家!


Tags: 列表数字itertools
3条回答

您可以将列表理解与itertools.combinations一起使用:

import itertools

[e for e in itertools.combinations([1,2,3,4], 2) if 3 in e]

输出:

[(1, 3), (2, 3), (3, 4)]

更好的是,您可以使用itertools.repeat

from itertools import repeat

l = [1,2,3,4]
[(f, s) for f, s in zip(l, repeat(3)) if f != 3]

输出:

[(1, 3), (2, 3), (4, 3)]

一种简单的方法是使用循环:

list2 = []
for x in list1:
     list2.append((x,3))
print(list2)

如果您想摆脱(3,3),请使用:

list2 = []
for x in list1:
     if x != 3:
          list2.append((x,3))
print(list2)

您可能希望使用列表理解:

orig_list = [1,2,3,4]
[(entry, 3) for entry in orig_list if entry != 3] # [(1, 3), (2, 3), (4, 3)]

如果您对重复值不感兴趣,可以将其设置为一个集合:

orig_list = set([1,2,3,4])
[(entry, 3) for entry in orig_list if entry != 3] # [(1, 3), (2, 3), (4, 3)]

相关问题 更多 >