2016-12-22 60 views
2

我有一個字符串說 string = 'bcde'改變蟒蛇單詞的第一個字母在字母表中的所有字母,並生成一個列表

我想要做的是從更換的第一個字母string(即b)並將其替換爲字母表中每個字母的迭代,直到z。

所需的輸出:

['acde', 'bcde', 'ccde', 'dcde', 'ecde', 'fcde', ..., 'zcde'] 

這是我目前使用的代碼,但我得到了錯誤的輸出:

a = 'bcde' 
a = list(a) 
alphabet = 'abcdefghijklmnopqrstuvwxyz' 
alphabet = list(alphabet) 
final = [] 
for n,i in enumerate(a): 
    if i==b: 
     a[i] = [alphabet[x] for x in alphabet ] 
     final.append(a[i]) 
+0

你不想遍歷'a',因爲你只想改變'a'的第一個字母。你也可以遍歷字母表,最簡單的方法是將字母連接到'a [1:]'。 – roganjosh

+0

喜歡它或討厭它在這裏它是在一個地圖'lambda x:x [0] + x [1],zip(alphabet,itertools.cycle((s [1:],))))' – themistoklik

+0

@ themistoklik'itertools.repeat(s [1:])'比'itertools.cycle((s [1:],))'更簡潔。而在Python 3中,您需要將'map'調用包裝在'list()'中。 –

回答

4

它可以用列表理解真的很容易做到

a = 'bcde' 
alphabet = 'abcdefghijklmnopqrstuvwxyz' 
post_string = a[1:] 
final = [letter+post_string for letter in alphabet] 
+1

你不需要把'字母'變成一個列表。你可以迭代字符串。你可以做'import string'然後它是'... for string.ascii_lowercase]' –

+0

你是對的,但我不認爲他真的希望字母表真的是字母表,它可能是另一種元素在列表中。 – iFlo

+0

或簡單地說'[x + a [1:] for map in map(chr,range(97,123))]' –

1

這是所有你需要:

alphabet = 'abcdefghijklmnopqrstuvwxyz' 

a='bcde' 
new_list = [] 
for i in alphabet: 
    new_list.append(i+a[1:]) 
+1

那麼什麼是需要創建一個列表?.. for循環使用 – sachsure

+0

Whaaat?他指定了期望的輸出。 – iFlo

+1

因爲這是OP的意圖。而'print'與創建列表有着根本的不同。一個是數據結構。 – roganjosh

0

嘗試以下操作:

s = 'bcde' 
final = [] 
if s[0] == 'b': 
    final = ['{}{}'.format(i, s[1:]) for i in 'abcdefghijklmnopqrstuvwxyz'] 
print(final) 

輸出:

>>> final 
['acde', 'bcde', 'ccde', 'dcde', 'ecde', 'fcde', 'gcde', 'hcde', 'icde', 'jcde', 'kcde', 'lcde', 'mcde', 'ncde', 'ocde', 'pcde', 'qcde', 'rcde', 'scde', 'tcde', 'ucde', 'vcde', 'wcde', 'xcde', 'ycde', 'zcde'] 
1

因爲人們總是可以mispell字母:

s = 'bcde' 
final = list(map(lambda x: chr(x + ord('a')) + s[1:], range(26))) 
2

這裏所有的解決方案都太複雜/在頂部,只需使用簡單的列表理解:

text = 'abcd' 
final = [c + text[1:] for c in 'abcdefghijklmnopqrstvuwxyz'] 

如果你需要用拼音多次使用import string然後string.ascii_lowercase

相關問題