我发现很难修改列表中的某些项目。 我有一个可与数据库相媲美的列表,我想将字符串值(我认为是缺失值)转换为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'
当我运行它时,即使没有出现“数据库清理”,也没有语法错误。如果我打印(数据库),我发现实际上没有任何改变。我做错了什么?
答案 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
的某个地方调用它。