繁体   English   中英

如何合并列表的所有元素

[英]How to merge all the elements of a list

我有一个任务是打印4个字符中'D'和'E'的所有组合。 是)我有的:

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

这将有效:

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
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

如果你需要“不太神奇”的东西,我想你正在寻找这样的东西:

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM