python两两组合_python – 一个列表中的两个组合列表

我是一个Python初学者.我想从一个列表中获取两个组合列表.

例如,我有一个列表:

c = [1, 2, 3, 4]

我想使用每四个项目来获得每个可能的组合来填充两个列表.将会有((2 ^ 4)/ 2)-1种可能性.

c1 = [1] c2 = [2, 3, 4]

c1 = [2] c2 = [1, 3, 4]

c1 = [3] c2 = [2, 3, 4]

c1 = [4] c2 = [1, 2, 3]

c1 = [1, 2] c2 = [3, 4]

c1 = [1, 3] c2 = [2, 4]

c1 = [1, 4] c2 = [2, 3]

这个函数通常适用于itertools,但我不能选择itertools.combination生成的列表数.

该功能只允许我选择每个列表应该有多少项.

例如,如果我尝试以下功能,

print list(itertools.combinations(c, 2))

我只能这样得到一个结果.

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

我很难找到这个,但我找不到任何东西.

更新

哦,我可怜的英语造成了这样的混乱!我完全改变了我的榜样.我想将4个项目分配到2个列表.对困惑感到抱歉!

解决方法:

我不确定你对10选择2的理解是什么.您从列表中收到的输出(itertools.combinations(c,2))是数学定义为10C2的输出.

编辑

从编辑到您的问题,您似乎想要一种完全不同的组合.结果的数量仍然不是45,而是:10C1 10C2 10C3 10C4 10C5.

我希望以下内容可以帮助您前进:

for i in range(1, 6):

for c1 in itertools.combinations(c, i):

c1 = set(c1)

c2 = set(c) - c1

print c1, c2

使用范围(1,3)时收到的输出:

[1] [2, 3, 4, 5, 6, 7, 8, 9, 10]

[2] [1, 3, 4, 5, 6, 7, 8, 9, 10]

[3] [1, 2, 4, 5, 6, 7, 8, 9, 10]

[4] [1, 2, 3, 5, 6, 7, 8, 9, 10]

[5] [1, 2, 3, 4, 6, 7, 8, 9, 10]

[6] [1, 2, 3, 4, 5, 7, 8, 9, 10]

[7] [1, 2, 3, 4, 5, 6, 8, 9, 10]

[8] [1, 2, 3, 4, 5, 6, 7, 9, 10]

[9] [1, 2, 3, 4, 5, 6, 7, 8, 10]

[10] [1, 2, 3, 4, 5, 6, 7, 8, 9]

[1, 2] [3, 4, 5, 6, 7, 8, 9, 10]

[1, 3] [2, 4, 5, 6, 7, 8, 9, 10]

[1, 4] [2, 3, 5, 6, 7, 8, 9, 10]

[1, 5] [2, 3, 4, 6, 7, 8, 9, 10]

[1, 6] [2, 3, 4, 5, 7, 8, 9, 10]

[1, 7] [2, 3, 4, 5, 6, 8, 9, 10]

[8, 1] [2, 3, 4, 5, 6, 7, 9, 10]

[1, 9] [2, 3, 4, 5, 6, 7, 8, 10]

[1, 10] [2, 3, 4, 5, 6, 7, 8, 9]

[2, 3] [1, 4, 5, 6, 7, 8, 9, 10]

[2, 4] [1, 3, 5, 6, 7, 8, 9, 10]

[2, 5] [1, 3, 4, 6, 7, 8, 9, 10]

[2, 6] [1, 3, 4, 5, 7, 8, 9, 10]

[2, 7] [1, 3, 4, 5, 6, 8, 9, 10]

[8, 2] [1, 3, 4, 5, 6, 7, 9, 10]

[9, 2] [1, 3, 4, 5, 6, 7, 8, 10]

[2, 10] [1, 3, 4, 5, 6, 7, 8, 9]

[3, 4] [1, 2, 5, 6, 7, 8, 9, 10]

[3, 5] [1, 2, 4, 6, 7, 8, 9, 10]

[3, 6] [1, 2, 4, 5, 7, 8, 9, 10]

[3, 7] [1, 2, 4, 5, 6, 8, 9, 10]

[8, 3] [1, 2, 4, 5, 6, 7, 9, 10]

[9, 3] [1, 2, 4, 5, 6, 7, 8, 10]

[10, 3] [1, 2, 4, 5, 6, 7, 8, 9]

[4, 5] [1, 2, 3, 6, 7, 8, 9, 10]

[4, 6] [1, 2, 3, 5, 7, 8, 9, 10]

[4, 7] [1, 2, 3, 5, 6, 8, 9, 10]

[8, 4] [1, 2, 3, 5, 6, 7, 9, 10]

[9, 4] [1, 2, 3, 5, 6, 7, 8, 10]

[10, 4] [1, 2, 3, 5, 6, 7, 8, 9]

[5, 6] [1, 2, 3, 4, 7, 8, 9, 10]

[5, 7] [1, 2, 3, 4, 6, 8, 9, 10]

[8, 5] [1, 2, 3, 4, 6, 7, 9, 10]

[9, 5] [1, 2, 3, 4, 6, 7, 8, 10]

[10, 5] [1, 2, 3, 4, 6, 7, 8, 9]

[6, 7] [1, 2, 3, 4, 5, 8, 9, 10]

[8, 6] [1, 2, 3, 4, 5, 7, 9, 10]

[9, 6] [1, 2, 3, 4, 5, 7, 8, 10]

[10, 6] [1, 2, 3, 4, 5, 7, 8, 9]

[8, 7] [1, 2, 3, 4, 5, 6, 9, 10]

[9, 7] [1, 2, 3, 4, 5, 6, 8, 10]

[10, 7] [1, 2, 3, 4, 5, 6, 8, 9]

[8, 9] [1, 2, 3, 4, 5, 6, 7, 10]

[8, 10] [1, 2, 3, 4, 5, 6, 7, 9]

[9, 10] [1, 2, 3, 4, 5, 6, 7, 8]

标签:python,iteration,combinations

来源: https://codeday.me/bug/20190609/1202705.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 您可以使用Python的内置函数zip()进行列表两两组合。以下是一个示例代码: ``` list1 = [1, 2, 3] list2 = ['a', 'b', 'c'] for a, b in zip(list1, list2): print(a, b) ``` 这将输出以下结果: ``` 1 a 2 b 3 c ``` zip()函数将两个列表作为输入,并返回一个元组列表,其每个元组包含两个列表的相应元素。然后,您可以使用for循环遍历这个元组列表,并对每个元组元素进行操作。 ### 回答2: Python可以使用嵌套循环来实现列表两两组合。具体步骤如下: 1. 定义一个列表,包含需要进行组合元素。 2. 使用两个嵌套的for循环,遍历列表的每一个元素。 3. 将两个循环变量指向的元素进行组合,并将组合结果存储到一个新的列表。 4. 循环结束后,输出新的列表,即为所有的两两组合结果。 下面是一个例子,假设我们要对列表[1, 2, 3, 4]进行两两组合: ``` python lst = [1, 2, 3, 4] combinations = [] # 使用两个嵌套循环进行组合 for i in range(len(lst)): for j in range(i + 1, len(lst)): combination = (lst[i], lst[j]) # 将两个元素组合一个元组 combinations.append(combination) # 将组合结果添加到新的列表 print(combinations) ``` 运行结果为: ``` [(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)] ``` 以上就是使用Python进行列表两两组合的方法。 ### 回答3: 在Python,我们可以使用嵌套循环和列表推导式来实现列表两两组合。 首先,我们可以使用嵌套循环来遍历列表的每个元素。在每个循环,我们将当前元素与其后面的所有元素进行组合。如下所示: ```python my_list = [1, 2, 3, 4, 5] combinations = [] for i in range(len(my_list)): for j in range(i + 1, len(my_list)): combinations.append((my_list[i], my_list[j])) print(combinations) ``` 输出结果为: ``` [(1, 2), (1, 3), (1, 4), (1, 5), (2, 3), (2, 4), (2, 5), (3, 4), (3, 5), (4, 5)] ``` 另外,我们还可以使用列表推导式来更简洁地实现列表两两组合。如下所示: ```python my_list = [1, 2, 3, 4, 5] combinations = [(my_list[i], my_list[j]) for i in range(len(my_list)) for j in range(i + 1, len(my_list))] print(combinations) ``` 输出结果与上述方式相同: ``` [(1, 2), (1, 3), (1, 4), (1, 5), (2, 3), (2, 4), (2, 5), (3, 4), (3, 5), (4, 5)] ``` 以上就是利用嵌套循环和列表推导式来实现Python列表两两组合的方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值