为啥我在这个 python 片段中得到 float 是不可迭代的? [复制]

Posted

技术标签:

【中文标题】为啥我在这个 python 片段中得到 float 是不可迭代的? [复制]【英文标题】:Why am I getting float is not iterable in this python snippet? [duplicate]为什么我在这个 python 片段中得到 float 是不可迭代的? [复制] 【发布时间】:2017-07-31 14:28:05 【问题描述】:
dist=[a,b,c,d,e]
spset=[1,3]
k=[]
for m in range(1,self.n+1):
    if m not in spset:
        k+=dist[m] 

我正在尝试创建一个列表 k,其中包含 dist 的所有元素,但索引在 spset[] 中的元素除外。我究竟做错了什么?错误是:

k+=dist[m] 
TypeError: 'int' object is not iterable

【问题讨论】:

简而言之:a_list = [1,2]; a_list += [3] 导致 a_list 成为 [1, 2, 3]。如果你有3 而不是[3],你应该使用a_list.append(3) 【参考方案1】:

问题可能出在@SuperSaiyan 中。此外,这里还有另一种更紧凑、更简单的可能解决方案:

[x for i,x in enumerate(dist) if i not in spset]

【讨论】:

【参考方案2】:

因为dist[m] 可能是int。您正在尝试通过 += 操作“扩展”列表。你可能想要k.append(dist[m])

【讨论】:

以上是关于为啥我在这个 python 片段中得到 float 是不可迭代的? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

为啥我在 Python 中没有得到 333

为啥我在 Python 中使用 BeautifulSoup 得到“'ResultSet' 没有属性 'findAll'”?

为啥这个带有 shebang #!/bin/sh 和 exec python 的片段在 4 个单引号内起作用?

为啥使用 FloatBuffer 而不是 float[]?

为啥我在 python 的 sklearn 中使用管道和没有管道得到不同的值

当 ssl 设置看起来正常时,为啥我在 Python 中得到 [SSL: CERTIFICATE_VERIFY_FAILED]?