再次提出一个愚蠢的问题。我试图从浮点数和-1s的列表中获取不是-1的每个值组成的列表。不知何故,我只会从循环中获得第一个值。我的最后任务是打印出新列表中的条目数。
flist = [9.0, 5.5, 6.7, 4.3, -1, 4.8, 8.0, -1, 7.0, 6.3, 4.5, 7.75, 6.5]
for i in flist:
if i != 1:
new_list = i
#the problem is when i tried to print out the number of entries
print(len(new_list))
TypeError:“ float”类型的对象没有len()
所以,我试图将其放入字符串列表中,这就是我得到的:
flist = [9.0, 5.5, 6.7, 4.3, -1, 4.8, 8.0, -1, 7.0, 6.3, 4.5, 7.75, 6.5]
for i in flist:
if i != 1:
new_list = i
new_list2 = map(str, new_list)
print(len(list3))
现在,出现以下错误:
TypeError:“ float”对象不可迭代
答案 0 :(得分:1)
您需要附加到列表:
flist = [9.0, 5.5, 6.7, 4.3, -1, 4.8, 8.0, -1, 7.0, 6.3, 4.5, 7.75, 6.5]
new_list = []
for f in flist:
if f != -1:
new_list.append(f)
或者,使用列表理解(更好的方法):
flist = [9.0, 5.5, 6.7, 4.3, -1, 4.8, 8.0, -1, 7.0, 6.3, 4.5, 7.75, 6.5]
new_list = [f for f in flist if f != -1]
在两种情况下,new_list
是
[9.0, 5.5, 6.7, 4.3, 4.8, 8.0, 7.0, 6.3, 4.5, 7.75, 6.5]
如果仅需要计数而不是实际列表,则可以执行以下操作:
flist = [9.0, 5.5, 6.7, 4.3, -1, 4.8, 8.0, -1, 7.0, 6.3, 4.5, 7.75, 6.5]
count = sum(1 for f in flist if f != -1)
答案 1 :(得分:0)
new_list = [i for i in flist if i!=-1]
您尚未初始化列表。同样,在列表中添加项目时,您还必须使用append
。