【问题标题】:Python - Iterating through a list -LambdaPython - 遍历列表 -Lambda
【发布时间】:2020-06-11 09:36:01
【问题描述】:

下面我创建了一个函数,它遍历数字列表并从每个数字中选择最后 3 位数字并将它们作为新数字放入另一个列表中。我还将它们从最小到最大排序。但是,我看到一个“ TypeError: 'int' object is not iterable" 消息。我的代码有什么问题?又怎么可能。我们用 lambda 函数做同样的事情吗?

ids = [1600,1500,1800,1900,1700]
alist=ids
sorted_ids=[]
def last_four(alist):
    for element in alist: 
        values=str(element)
        sorted_ids.append(values[1:4])
    return sorted(sorted_ids)

print(last_four(alist))

非常感谢!

【问题讨论】:

  • 要选择最后 3 位数字,您可以使用 str(value)[:-3] 而不是 str(value)[1:4]。这样,无论数字的长度如何,它总是采用最后 3 位数字

标签: python-3.x list function loops lambda


【解决方案1】:
ids = [1600,1500,1800,1900,1700]
alist=ids
sorted_ids=[]
def last_four(alist):
    for element in alist: 
        values=str(element)
        sorted_ids.append(values[1:4])
    return sorted(sorted_ids)

print(last_four(alist))

结果:

你的第二个问题是代码

last_four = list(map(lambda element: str(element)[1:4], alist))
print(sorted(last_four))

【讨论】:

    【解决方案2】:

    您的代码似乎已经运行良好。

    如果您想使用 lambda,您可以编写类似这样的代码。 (和answer posted是一样的,不同的是可以直接使用sorted函数,不用刻意把map对象转成list对象)

    def main():
        ids = [1600, 1500, 1800, 1900, 1700]
        alist = ids
        sorted_last_four = sorted(map(lambda element: str(element)[1:4], alist))
        print(sorted_last_four)
    
    
    if __name__ == '__main__':
        main()
    

    如果您不熟悉 lambda 的使用,或者您想了解如何一起使用 lambda 和排序函数,可以阅读此answer posted

    祝你好运。

    【讨论】:

      猜你喜欢
      • 2020-04-27
      • 2013-02-18
      • 1970-01-01
      • 2018-03-08
      • 2015-10-07
      • 2013-07-13
      • 1970-01-01
      相关资源
      最近更新 更多