0

我有这个代码

a=[0,['hello','charles', 'hey', 'steve', 'hey', 0.0, 1.5, 23]]  
for row in a:
   for ix, char in enumerate(row):
       if 'hello' in char:
           row[ix] = 'Good Morning'

但这不起作用,因为我在同一个列表中有整数、浮点数和字符串。我需要用 Good Morning 更改 hello 并保存数据结构和属性类型,因为稍后我将使用该数据进行一些算术计算。谢谢!

4

1 回答 1

2

如果您只想将“Hello”替换为“早上好”,您可以这样做:

a = [[0], ['hello','charles', 'hey', 'steve', 'hey', 0.0, 1.5, 23]]  
for row in a:
    for index, item in enumerate(row):
        if item == "hello":
            row[index] = "Good morning"

如果您真的想替换任何包含“hello”的字符串,我会将整个内容包装在 try except 块中:

a = [[0], ['hello','charles', 'hey', 'steve', 'hey', 0.0, 1.5, 23]]  
for row in a:
    for index, item in enumerate(row):
        try:
            if "hello" in item:
                row[index] = "Good morning"
        except TypeError:
            pass

顺便说一句,“char”是一个糟糕的变量名。您的行不包含长度为一的字符串,因此它们不是字符。

第一行实际上应该是一个包含单个整数的列表。如果出于某种原因您真的不想这样做,则必须将整个事情包装在另一个 try/except 块中:

a = [0, ['hello','charles', 'hey', 'steve', 'hey', 0.0, 1.5, 23]]  
for row in a:
    try:
        for index, item in enumerate(row):
            if item == "hello":
                row[index] = "Good morning"
    except TypeError:
        pass
于 2013-03-06T19:50:41.317 回答