带切片的列表理解(通过删除1个字符形成的所有字符串版本)

JMa*_*tth 0 python list-comprehension list slice

我正在创建一个字符串的所有版本的列表,可以通过使用理解只删除一个字符来实现.我可以删除每个字符但不能保留其他字符.

wrd = 'superstar'
list2 = [(wrd[:1-1] + wrd[:i+1]) for i in range(len(wrd))]
print(list2)
Run Code Online (Sandbox Code Playgroud)

Chr*_*ean 9

你的列表切片有点偏.要从字符串中的位置删除单个字符,请使用表单string[:index] + string[index + 1:]而不是string[:index - 1] + string[:index + 1]:

>>> word = 'superstar'
>>> words = [word[:i] + word[i + 1:] for i in range(len(word))]
>>> words
['uperstar', 'sperstar', 'suerstar', 'suprstar', 'supestar', 'supertar', 'supersar', 'superstr', 'supersta']
>>> 
Run Code Online (Sandbox Code Playgroud)


jam*_*lak 5

>>> from itertools import combinations
>>> wrd = 'superstar'
>>> [''.join(comb) for comb in combinations(wrd, len(wrd) - 1)]
['supersta', 'superstr', 'supersar', 'supertar', 'supestar', 'suprstar', 'suerstar', 'sperstar', 'uperstar']
Run Code Online (Sandbox Code Playgroud)