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

2024-04-18 15:06:06 发布

您现在位置:Python中文网/ 问答频道 /正文

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

预期的输出应该是组成单词的所有常用字母的组合(作为字符串类型),第一个字母为大写。你知道吗


Tags: 字符串代码in元素列表string字母common
1条回答
网友
1楼 · 发布于 2024-04-18 15:06:06

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

相关问题 更多 >