如何从浮动列表中组成具有特定条件的列表

时间:2019-04-03 05:13:49

标签: python python-3.x

再次提出一个愚蠢的问题。我试图从浮点数和-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”对象不可迭代

2 个答案:

答案 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