如何根据元素过滤浮动列表?

时间:2014-03-11 02:11:22

标签: python python-3.x

我对编程很新。

基本上在浮点数列表中,我希望我的程序打印每个以'1'或'-1'开头的程序。这是我到目前为止所做的。

def oneminus(L):  
    for i in range(len(L)):  
        if L[i][0]=='1':  
            print(L[i])  
        elif L[i][0]=='-' and L[i][1]=='1':  
            print(L[i])

当我运行程序但是我得到错误“TypeError:'float'对象不可订阅”所以我假设问题是由于列表包含浮点数。

1 个答案:

答案 0 :(得分:1)

问题在于你将元素视为字符串,而不是浮点数。与PHP和Javascript不同,Python没有隐式类型强制。如果要获取字符串表示形式,则必须使用strrepr明确转换它。

你想要的是

def oneminus(L): 
    for x in L:
        if str(x).startswith('1') or str(x).startswith('-1'):
            print(x)

您可以利用str.strip将其缩短。

def oneminus(L): 
    for x in L:
        if str(x).strip('-').startswith('1'):
            print(x)

另请注意,您可以直接迭代列表。