如果x ==“T”x ==“”替换T,为什么我不能使用

时间:2012-09-27 04:16:00

标签: python list replace

我想写一个函数,用空格替换T.

   b=""
   xs=list("fghtThjchk")
   for x in xs:
       if x=="T" or "t":
           x==" "
           b=b+x

我可以用.replace来做,但我仍然想知道我可以使用列表来做它。

6 个答案:

答案 0 :(得分:6)

x==" "x=" "不同,这就是b获取错误值的原因

if x=="T" or "t":并不意味着“是'T'或't'中的x之一”。您需要这样说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

答案 1 :(得分:5)

此行无法执行您想要的操作

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

该条件总是评估为真,因为"t"被认为是真实的。

你的意思是

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

这一行
x==" "
我想,

是一项任务而不是比较:

x=" "

答案 2 :(得分:3)

您使用的语法有点不正确。 下面给出了在列表推导中使用if / else的正确方法:

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

- 这种方法更快更快当字符串长度很大时优化。

- 我们再次创建字符串对象&再次在上述答案中,不推荐。

- 所以在执行所有操作后,总是使用 join()加入列表,而不是循环中的字符串连接

答案 3 :(得分:2)

我们可以使用快速的re(正则表达式)模块:

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

答案 4 :(得分:0)

您需要按索引引用列表,例如:

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

答案 5 :(得分:0)

当您执行for x in xs时,您一次为x的每个元素分配名称xs。当您执行x=" "时(我认为==是拼写错误),您将重新分配名称x,但不会更改xs中的原始元素。