如何合并lis的所有元素

2024-06-27 09:24:18 发布

您现在位置: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

Tags: inforproductrepeatprintjoinappendstr
3条回答
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

这将起作用:

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

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

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)

相关问题 更多 >