Python 查找大写字母移位的单词的所有变体
我需要一个python函数,它可以执行以下操作: 如果输入't'和'tattle',它应该返回如下列表: ['Tattle','Tattle','Tattle'] 或者用“z”和“zzzzz”: ['Zzzzz','Zzzzz','Zzzzz','Zzzzz','Zzzzz'] 我编写了以下代码,但它不适用于第二个示例,因为当前函数检查basestr是否与结果列表R中已经存在的内容匹配,并且可以检测到由于单词中已经存在多个basestr的单词而导致的误报。有人有什么建议吗Python 查找大写字母移位的单词的所有变体,python,string,list,python-3.x,capitalization,Python,String,List,Python 3.x,Capitalization,我需要一个python函数,它可以执行以下操作: 如果输入't'和'tattle',它应该返回如下列表: ['Tattle','Tattle','Tattle'] 或者用“z”和“zzzzz”: ['Zzzzz','Zzzzz','Zzzzz','Zzzzz','Zzzzz'] 我编写了以下代码,但它不适用于第二个示例,因为当前函数检查basestr是否与结果列表R中已经存在的内容匹配,并且可以检测到由于单词中已经存在多个basestr的单词而导致的误报。有人有什么建议吗 def all_var
def all_variants(wrapletter,word):
L,R,WLU,basestr=list(word),[],wrapletter.upper(),''
if L.count(wrapletter)==1:
for char in L:
if wrapletter==char:
basestr=basestr+WLU
else:
basestr=basestr+char
R.append(basestr)
return(R)
else:
for i in range(L.count(wrapletter)):
basestr=''
if i==0 and L[0]==wrapletter:
basestr=WLU
for char in range(1,len(L)):
basestr=basestr+L[char]
R.append(basestr)
else:
for char in L:
if wrapletter==char:
if WLU in basestr:
basestr=basestr+char
elif basestr in str(R):
basestr=basestr+char
else:
basestr=basestr+WLU
else:
basestr=basestr+char
R.append(basestr)
R.remove(R[0])
return(R)
虽然不优雅,但也许这正是你需要的
target = "daaddaad"
def capitalize(target_letter, word):
return [word[:i] + word[i].upper() + word[i + 1:]
for i in xrange(len(word)) if word[i] == target_letter]
print capitalize("d", target)
产出:
['Daaddaad', 'daaDdaad', 'daadDaad', 'daaddaaD']
虽然不优雅,但也许这正是你需要的
target = "daaddaad"
def capitalize(target_letter, word):
return [word[:i] + word[i].upper() + word[i + 1:]
for i in xrange(len(word)) if word[i] == target_letter]
print capitalize("d", target)
产出:
['Daaddaad', 'daaDdaad', 'daadDaad', 'daaddaaD']
当我运行此函数时,返回了以下结果:
>>>all_variants("t", "tattle")
['Tattle', 'taTtle', 'tatTle']
>>>all_variants("z", "zzzzz")
['Zzzzz', 'zZzzz', 'zzZzz', 'zzzZz', 'zzzzZ']
当我运行此函数时,返回了以下结果:
>>>all_variants("t", "tattle")
['Tattle', 'taTtle', 'tatTle']
>>>all_variants("z", "zzzzz")
['Zzzzz', 'zZzzz', 'zzZzz', 'zzzZz', 'zzzzZ']
试试这个。我遍历每个字母,将其转换为大写,并将其和原始字符串的其他部分夹在一起
def all_variants(wrapletter, word):
variants = []
for i, letter in enumerate(word):
if letter == wrapletter:
variants.append(word[:i] + letter.upper() + word[i+1:])
return variants
print all_variants('z', 'zzzzz')
print all_variants('t', 'tattle')
试试这个。我遍历每个字母,将其转换为大写,并将其和原始字符串的其他部分夹在一起
def all_variants(wrapletter, word):
variants = []
for i, letter in enumerate(word):
if letter == wrapletter:
variants.append(word[:i] + letter.upper() + word[i+1:])
return variants
print all_variants('z', 'zzzzz')
print all_variants('t', 'tattle')
你对问题的陈述是“它不起作用”。这和答案“让它工作起来”一样有用。@Blorgbeard:如果你运行他的函数,你会看到他得到了什么输出,他的问题说明了期望的输出是什么。@Pound我不必运行他的代码来解决他的问题。“不起作用”可以是任何东西。你对问题的陈述是“它不起作用”。这和答案“让它工作起来”一样有用。@Blorgbeard:如果你运行他的函数,你会看到他得到了什么输出,他的问题说明了期望的输出是什么。@Pound我不必运行他的代码来解决他的问题。“不起作用”可以是任何东西。非常简单和直观。非常感谢!非常简单和直观。非常感谢!