修改列表中的项目不会给出任何输出

时间:2017-09-14 21:56:59

标签: python list function

我发现很难修改列表中的某些项目。 我有一个可与数据库相媲美的列表,我想将字符串值(我认为是缺失值)转换为99.

database = [2,5,11,33,78498,'abcqwe',13, 18,11,1993,'defrty']

def missing_values(i):
    for i in database:
        if type(i) == str:
            i = 99
    return 'Database cleaned'

当我运行它时,即使没有出现“数据库清理”,也没有语法错误。如果我打印(数据库),我发现实际上没有任何改变。我做错了什么?

4 个答案:

答案 0 :(得分:2)

在此功能中,您将i设置为99,但绝不会将列表中的值设置为i = 99。在设置database[database.index(i)] = 99 的位置,您应首先在列表中获取此值的索引,然后设置如下值:

1,1,1
2,2,2
3,3,3
4,4,4
5,5,5

你应该确保按照Abe的说法调用该函数。也没有必要将值传递给此函数。

答案 1 :(得分:0)

您需要确保在文件中的某处调用missing_values()函数,否则代码将永远不会被执行。

missing_values()

此外,看到您在database的同一范围内定义了missing_values变量,您不需要参数i

答案 2 :(得分:0)

您没有看到列表清理的原因是因为您在清理后没有返回列表,而是只打印一个msg而原始列表保持不变。

database = [2,5,11,33,78498,'abcqwe',13, 18,11,1993,'defrty']

def missing_values(i):
    for i in database:
        if type(database[i]) == str:
            database[i] = 99
    print 'Database cleaned'
    return database

此外,您还需要将函数中使用的参数从i更改为database。我假设i参数应该是需要清理的列表。

答案 3 :(得分:0)

您没有正确调用您的功能。确保然后在代码C B 1.3 B C 0.75 C C 1 的某个地方调用它。