2012-09-27 45 views

回答

6

x==" "是不一樣的x=" "這就是爲什麼b爲得到錯誤的值

if x=="T" or "t":並不意味着「爲x‘T’或‘T’中的一個」。你需要說像這樣if x in 'Tt':或本if x=="T" or x=="t":

或許這就是你正在嘗試做的

b = "" 
for x in "fghtThjchk": 
    if x == "T" or x == "t": 
     x = " " 
    b = b + x 
0

您需要通過索引引用列表,像這樣:

for i, x in enumerate(xs): 
    if x in ["T", "t"]: 
     xs[i] = " " 
+0

這是我的第一個想法,然後我看到他們正在構建的新字符串,'B' –

5

這條線沒有做你想做的

if x=="T" or "t": 

這種情況一直在s的評估爲真,因爲"t"被認爲是真理。

你的意思是

if x=="T" or x=="t": 

這說

x==" " 

中的意思,我猜線,是一個分配,而不是一個比較:

x=" " 
0

當你做for x in xs您正在爲的每個元素指定名稱x 0一次一個。當你這樣做x=" "(我認爲==是一個錯字)你重新分配名稱x但不改變xs中的原始元素。

3

您使用的語法有點不正確。 使用的if/else在列表內涵的正確方式如下:

''.join([' ' if x=='T' or x=='t' else x for x in xs])

- 這種方法是利特勒&當字符串長度大的優化,速度更快。

- 我們再次在上面的答案中創建字符串對象&,這是不推薦的。

- 所以總是使用join()方法在環路上進行的所有操作,而不是字符串連接後加入列表。

2

我們可以利用re(正則表達式)模塊,它是快速的:

import re 
aa = re.sub(r'([.tT])', " ", "fghtThjchk") 
相關問題