如何创建包含两个字符串之间所有常见字母组合的列表?

时间:2019-07-16 14:06:18

标签: python string list set

我尝试使用set(),因为它将仅打印两个集合的唯一元素。 在我的代码中,common_letters是两个字符串中的一组常见字母。 我正在尝试打印可以从common_letters元素生成的所有可能的单词组合,并且还尝试将该单词列表转换为每个字符串的首字母大写的单词列表。

到目前为止,这是我的代码:

import itertools as itr

def listtostring(s):
    string =" "
    return (string.join(s))

str1=input("Enter 1st string:")
str2=input("Enter 2nd string:")
common_letters=set(set(str1) & set(str2))

for letter in common_letters:
    common_letters.add(letter)
print("list of common letters : ",common_letters)

mylist=list(itr.permutations(common_letters))

print("Words generated from common letters are : ",listtostring(mylist))

但是我遇到以下错误:

File "C:/Users/problem_1.py", line 18, in <module>
    print("Words generated from common letters are : ",listtostring(mylist))

File "C:/Users/problem_1.py", line 5, in listtostring
    return (string.join(s))

TypeError sequence item 0: expected str instance, tuple found

预期输出应该是构成单词(作为字符串类型)的常见字母与首字母大写的所有组合。

1 个答案:

答案 0 :(得分:2)

您错误地使用了listtostring函数,您应该在创建的每个置换中使用该函数,而不是在整个置换列表中使用。您可以使用capitalize()将首字母大写。

这是修改后的代码,我删除了您的for循环,因为它没有执行任何操作:

import itertools as itr

def listtostring(s):
    string = ""
    return (string.join(s))

str1=input("Enter 1st string:")
str2=input("Enter 2nd string:")
common_letters=set(set(str1) & set(str2))
print("list of common letters : ",common_letters)

mylist=list(itr.permutations(common_letters))
finalList = [listtostring(x).capitalize() for x in mylist]

print("Words generated from common letters are : ", finalList)

如果希望最后一行都为一个字符串,则可以将最后一行更改为以下内容:

print("Words generated from common letters are : ", " ".join(finalList))