【问题标题】:'int' object is not iterable python3?“int”对象不是可迭代的python3?
【发布时间】:2018-03-22 08:05:34
【问题描述】:

浏览了有关问题的帖子,但没有一个帮助我理解问题或解决问题:

# This is the definition of the square() function
def square(lst1):
    lst2 = []
    for num in lst1:
        lst2.append(num**2)
    return lst2

n = [4,3,2,1]

print(list(map(square, n)))
>>>
File "test.py", line 5, in square
    for num in lst1:
TypeError: 'int' object is not iterable

square() 函数定义中的那一行有什么问题,解决方法是什么? 非常感谢!

【问题讨论】:

  • edit你的问题,不要在cmets中完成。
  • 现在square 太复杂了。 map 一次传递 1 个整数。你需要def square(n): return n*n
  • 您的函数中不需要for num in lst1。该函数一次只接收一个列表元素。就做return lst1**2;返回一次性列表通常没有用处
  • 感谢让-弗朗索瓦!我从 youtube 上复制了代码,这让我困扰了几个小时。现在我明白了原因。但是,我对此的最大问题是:如果这与我的原始问题相关,python 如何区分整数列表和整数?再次感谢。
  • 哇!!! Just do return lst1**2---从来没有想过这个,太神奇了!

标签: python-3.x object iterable


【解决方案1】:

mapsquare 应用于列表中的每个项目。

所以在square 中包含一个循环是多余的。 lst1 在函数被调用时已经是一个整数。

要么做:

result = square(n)

或:

result = [i*i for i in n]

后者比后者更好更快

result = list(map(square,n))

与:

def square(i):
    return i*i 

(或lambda

【讨论】:

  • 谢谢!我只关注map() 的使用,自定义函数作为第一个参数。我现在不想和更多花哨的东西混在一起。
猜你喜欢
  • 1970-01-01
  • 2013-08-02
  • 2012-06-21
  • 1970-01-01
  • 2014-05-03
  • 2017-09-11
  • 2015-04-14
相关资源
最近更新 更多