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

0 投票
1 回答
823 浏览
提问于 2025-04-17 21:44

我对编程还比较陌生。

简单来说,我想让我的程序从一个浮点数的列表中打印出所有以'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' object is not subscriptable”。所以我猜这个问题是因为列表里包含了浮点数。

1 个回答

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)

另外,注意你可以直接遍历一个列表。

撰写回答