首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >List Tuple表示

List Tuple表示
EN

Stack Overflow用户
提问于 2021-10-17 23:16:46
回答 1查看 84关注 0票数 0

比方说,我有下面的偶数名称列表,应该返回表示对的结果:

代码语言:javascript
复制
['A', 'B', 'C', 'D']
代码语言:javascript
复制
>>> [[('B', 'C'), ('A', 'D')],
     [('A', 'B'), ('C', 'D')],
     [('A', 'C'), ('B', 'D')]]

我写了以下代码:

代码语言:javascript
复制
import itertools
combinations = list(itertools.combinations(['A', 'B', 'C', 'D'], 2))
result = []

for i in range( 0 , len(combinations) ):
    if (combinations[i-1][0] != combinations[i][0]) & (combinations[i-1][0] != combinations[i][1])  :
        if (combinations[i-1][1] != combinations[i][0]) & (combinations[i-1][1] != combinations[i][1]) :
            zipped = zip(combinations[i], combinations[i-1])
            result.append(list(zipped))
result

但结果是它给出了以下结果;

代码语言:javascript
复制
[[('A', 'C'), ('B', 'D')],
 [('B', 'A'), ('C', 'D')]]

我的代码中缺少的点是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-17 23:37:02

这是一个棘手的小问题,特别是当扩展到四个以上的名字时。我在这里所做的是创建这四个名称的所有排列。然后,为了确定唯一性,我对对进行排序,并对对列表进行排序。然后我会保留那些唯一的。

代码语言:javascript
复制
import itertools
gather = []
for sets in itertools.permutations(['Andrea', 'Bob', 'Cassandra', 'Doug']):
    pairs = sorted([sorted(p) for p in zip(sets[0::2],sets[1::2])])
    if pairs not in gather:
        gather.append(pairs)
from pprint import pprint
pprint(gather)

四个名称的输出:

代码语言:javascript
复制
[[['Andrea', 'Bob'], ['Cassandra', 'Doug']],
 [['Andrea', 'Cassandra'], ['Bob', 'Doug']],
 [['Andrea', 'Doug'], ['Bob', 'Cassandra']],

六个名称的输出:

代码语言:javascript
复制
[[['Andrea', 'Bob'], ['Cassandra', 'Doug'], ['Ethel', 'Fred']],
 [['Andrea', 'Bob'], ['Cassandra', 'Ethel'], ['Doug', 'Fred']],
 [['Andrea', 'Bob'], ['Cassandra', 'Fred'], ['Doug', 'Ethel']],
 [['Andrea', 'Cassandra'], ['Bob', 'Doug'], ['Ethel', 'Fred']],
 [['Andrea', 'Cassandra'], ['Bob', 'Ethel'], ['Doug', 'Fred']],
 [['Andrea', 'Cassandra'], ['Bob', 'Fred'], ['Doug', 'Ethel']],
 [['Andrea', 'Doug'], ['Bob', 'Cassandra'], ['Ethel', 'Fred']],
 [['Andrea', 'Doug'], ['Bob', 'Ethel'], ['Cassandra', 'Fred']],
 [['Andrea', 'Doug'], ['Bob', 'Fred'], ['Cassandra', 'Ethel']],
 [['Andrea', 'Ethel'], ['Bob', 'Cassandra'], ['Doug', 'Fred']],
 [['Andrea', 'Ethel'], ['Bob', 'Doug'], ['Cassandra', 'Fred']],
 [['Andrea', 'Ethel'], ['Bob', 'Fred'], ['Cassandra', 'Doug']],
 [['Andrea', 'Fred'], ['Bob', 'Cassandra'], ['Doug', 'Ethel']],
 [['Andrea', 'Fred'], ['Bob', 'Doug'], ['Cassandra', 'Ethel']],
 [['Andrea', 'Fred'], ['Bob', 'Ethel'], ['Cassandra', 'Doug']]]
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69609290

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档