Python中两个元组中元素之间的组合

时间:2015-06-29 15:56:26

标签: python tuples

我有两个元组:

t1 = ('A', 'B')
t2 = ('C', 'D', 'E')

我想知道如何在元组之间创建组合,因此结果应为:

AC, AD, AE, BC, BD, BE

修改

使用

list(itertools.combinations('abcd',2))

我可以为给定的字符串生成组合列表:

[('a', 'b'), ('a', 'c'), ('a', 'd'), ('b', 'c'), ('b', 'd'), ('c', 'd')]

如果我插入元组而不是字符串,则会发生以下错误:

TypeError: sequence item 0: expected string, tuple found

有任何建议如何进行?

6 个答案:

答案 0 :(得分:8)

itertools.product完全符合您的要求:

>>> import itertools
>>> t1 = ('A', 'B')
>>> t2 = ('C', 'D', 'E')
>>> list(itertools.product(t1, t2))
[('A', 'C'), ('A', 'D'), ('A', 'E'), ('B', 'C'), ('B', 'D'), ('B', 'E')]
>>> [''.join(x) for x in itertools.product(t1, t2)]
['AC', 'AD', 'AE', 'BC', 'BD', 'BE']

答案 1 :(得分:1)

for value_one in t1:
    for value_two in t2:
        result = (str(value_one), str(value_two))
        print result

这不使用外部库。字面上只有两个for循环和字符串连接。格式化您喜欢的输出。

这似乎你要么没有付出任何努力来找到这个答案,要么我误解了这个问题。

编辑:我发现你来自R背景,所以你可能不了解Python语法。请参阅Python基础知识指南;我相信他们会有很大的帮助。要保存循环中的值,如@Naman所述,您需要创建一个空列表并[list_name].append([value])所需的值,然后使用其他结构打印列表中的值。

答案 2 :(得分:0)

这是我的简单方法:

for i in t1:
    for j in t2:
        print(i+j,end="")

这三行输入给出了上述组合。

答案 3 :(得分:0)

您可以通过迭代两个元组来打印您想要的内容(或者创建一个空列表并将输出存储在该列表中)

l = []
for c1 in t1:
    for c2 in t2:
        print c1 + c2 + ',',
        l.append(c1 + c2)

最后列表l将包含输出元素。您可以通过

处理其元素或制作元组
t = tuple(l)

答案 4 :(得分:0)

t = []
for x in t1:
    for y in t2:
        t.append(x+y)

t = tuple(t)

因此迭代两个元组,将每个组合追加到列表中,然后将列表转换回元组。

答案 5 :(得分:0)

所有可能的组合:

import itertools

t1 = ('A', 'B')
t2 = ('C', 'D', 'E')

print(tuple(itertools.combinations(t1 + t2, 2)))

输出:(('A', 'B'), ('A', 'C'), ('A', 'D'), ('A', 'E'), ('B', 'C'), ('B', 'D'), ('B', 'E'), ('C', 'D'), ('C', 'E'), ('D', 'E'))