首页 > 解决方案 > 如何将其转换为 python 中的字符串列表

问题描述

我对python很陌生,我需要从列表中所有可能的字母排列(letters_guessed)中创建一个字符串列表。但问题是我得到一个看起来像这样的列表:

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

有没有办法可以将字符绑定到字符串中?我尝试使用这个:

for i in range(0, len(t)):
    words_guessed = (''.join(t[i]))

但这会创建一个行列表,然后我无法将其转换为字符串列表

代码:

import itertools
letters_guessed = ['a', 'b', 'c', 'd']
t = list(itertools.permutations(letters_guessed, 4))
for i in range(0, len(t)):
    words_guessed = (''.join(t[i]))
print(t)

标签: pythonlist

解决方案


最简单的方法是使用map将结果元组连接成字符串:

list(map(''.join, t))
# ['abcd', 'abdc', 'acbd', 'acdb', 'adbc'...

请注意,使用以下内容:

for i in range(0, len(t)):
    words_guessed = (''.join(t[i]))

您没有对加入给定元组的结果做任何事情。你只是words_guessed在每次迭代中覆盖。您可以迭代生成的排列并将append它们words_guessed作为一个列表:

words_guessed = []
for i in permutations(letters_guessed, 4):
    words_guessed.append(''.join(i))

推荐阅读