我想写一个函数,用空格替换 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
这条线不符合您的要求
if x=="T" or "t":
该条件始终评估为真,因为"t"
被认为是真实的。
你的意思是
if x=="T" or x=="t":
和那行说
x==" "
我想,这意味着是一项任务,而不是比较:
x=" "
您使用的语法有点不正确。下面给出了在列表推导中使用 if/else 的正确方法:
''.join([' ' if x=='T' or x=='t' else x for x in xs])
-- 当字符串长度较大时,此方法更快且优化。
- 我们在上面的答案中一次又一次地创建字符串对象,不建议这样做。
-- 所以在对列表执行所有操作后,总是使用join()来加入列表,而不是循环中的字符串连接。
我们可以使用re
(Regular Expression) 模块,它很快:
import re
aa = re.sub(r'([.tT])', " ", "fghtThjchk")
您需要按索引引用列表,例如:
for i, x in enumerate(xs):
if x in ["T", "t"]:
xs[i] = " "
当您这样做时,for x in xs
您一次将名称分配x
给一个元素的每个元素xs
。当您这样做时x=" "
(我认为==
是错字),您正在重新分配名称x
,但不会更改xs
.