【问题标题】:How can I create a list with all the possible combinations of common letters between two strings?如何创建一个包含两个字符串之间常见字母的所有可能组合的列表?
【发布时间】:2019-11-25 07:17:11
【问题描述】:

我尝试过使用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

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

【问题讨论】:

    标签: python string list set


    【解决方案1】:

    您使用了错误的 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))
    

    【讨论】:

    • 感谢您的帮助,但我想要的输出是字符串类型。列表 finalList 的所有元素都应转换为字符串类型,因为它显示类型为
    • @SurendraSingh 那么,你想要一个长字符串,所有单词都用空格隔开吗?查看我的更新答案。
    • @SurendraSingh 如果这解决了您的问题,请标记为已解决,或者让我知道问题所在。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-03
    • 1970-01-01
    • 2020-02-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多