如何合并列表的所有元素

时间:2018-02-06 21:01:04

标签: python

我的任务是打印出' D'的所有组合。和' E' 4个字符。 我有什么:

x = product(['D', 'E'], repeat=4)
p = ''.join(str(s) for s in x)
lxx = []
lxx.append(p)
f = ''.join(lxx)
print(f)

我得到了什么:

('D', 'D', 'D', 'D')('D', 'D', 'D', 'E')('D', 'D', 'E', 'D')('D', 'D', 'E', 'E')('D', 'E', 'D', 'D')('D', 'E', 'D', 'E')('D', 'E', 'E', 'D')('D', 'E', 'E', 'E')('E', 'D', 'D', 'D')('E', 'D', 'D', 'E')('E', 'D', 'E', 'D')('E', 'D', 'E', 'E')('E', 'E', 'D', 'D')('E', 'E', 'D', 'E')('E', 'E', 'E', 'D')('E', 'E', 'E', 'E')

我需要什么:

DDDD
DDDE
DDED
DDEE
DEDD
DEDE
DEED
DEEE
EDDD
EDDE
EDED
EDEE
EEDD
EEDE
EEED
EEEE

3 个答案:

答案 0 :(得分:4)

这将有效:

from itertools import product

list(product(['D', 'E'], repeat=4))

漂亮的印刷:

for i in product(['D', 'E'], repeat=4):
    print(''.join(i))

# DDDD
# DDDE
# DDED
# DDEE
# DEDD
# DEDE
# DEED
# DEEE
# EDDD
# EDDE
# EDED
# EDEE
# EEDD
# EEDE
# EEED
# EEEE

答案 1 :(得分:1)

from itertools import product
x = product(['D', 'E'], repeat=4)
for word in ["".join(x) for x in list(x)]: print(word)

DDDD
DDDE
DDED
DDEE
DEDD
DEDE
DEED
DEEE
EDDD
EDDE
EDED
EDEE
EEDD
EEDE
EEED
EEEE

答案 2 :(得分:0)

如果您需要某些东西"不那么神奇",我认为您正在寻找这样的东西:

def product(items, repeat, currentstring="", ret = None):
    if ret == None:
        ret = list()
    if len(currentstring) == repeat:
        ret.append(currentstring)
        print(currentstring)
    else:
        for letter in items:
            product(items, repeat, currentstring + letter, ret)
    return ret

product(['D', 'E'], repeat=4)

其他答案似乎有效。所以,使用它只是为了你想要练习递归或其他东西。关于它的好处是,它允许接收更多的信件。比如,你可以试试

product(['D', 'E', 'F', 'G'], repeat=4)