我想寫一個函數,用空格替換T.爲什麼我不能使用if x ==「T」x ==「」來代替T
b=""
xs=list("fghtThjchk")
for x in xs:
if x=="T" or "t":
x==" "
b=b+x
我可以做.replace,但我仍然想知道我可以使用list來做到這一點。
我想寫一個函數,用空格替換T.爲什麼我不能使用if x ==「T」x ==「」來代替T
b=""
xs=list("fghtThjchk")
for x in xs:
if x=="T" or "t":
x==" "
b=b+x
我可以做.replace,但我仍然想知道我可以使用list來做到這一點。
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
您需要通過索引引用列表,像這樣:
for i, x in enumerate(xs):
if x in ["T", "t"]:
xs[i] = " "
這條線沒有做你想做的
if x=="T" or "t":
這種情況一直在s的評估爲真,因爲"t"
被認爲是真理。
你的意思是
if x=="T" or x=="t":
這說
x==" "
中的意思,我猜線,是一個分配,而不是一個比較:
x=" "
當你做for x in xs
您正在爲的每個元素指定名稱x
0一次一個。當你這樣做x=" "
(我認爲==
是一個錯字)你重新分配名稱x
但不改變xs
中的原始元素。
您使用的語法有點不正確。 使用的if/else在列表內涵的正確方式如下:
''.join([' ' if x=='T' or x=='t' else x for x in xs])
- 這種方法是利特勒&當字符串長度大的優化,速度更快。
- 我們再次在上面的答案中創建字符串對象&,這是不推薦的。
- 所以總是使用join()方法在環路上進行的所有操作,而不是字符串連接後加入列表。
我們可以利用re
(正則表達式)模塊,它是快速的:
import re
aa = re.sub(r'([.tT])', " ", "fghtThjchk")
這是我的第一個想法,然後我看到他們正在構建的新字符串,'B' –