【问题标题】:Python, how to set index properlyPython,如何正确设置索引
【发布时间】:2020-09-04 06:47:51
【问题描述】:

我有一个问题要问你。

我有以下代码:

defaults = list(0 for m in range(12))
index=6
totale=5
for i in index:
    defaults[i]=totale

但是给我错误TypeError: 'int' object is not iterable。我想设置从索引开始到年底的每个月的总价值,但[index:] 不起作用。 换句话说,我想获得以下结果:

[0,0,0,0,0,5,5,5,5,5,5,5]

【问题讨论】:

  • “但是给我错误” - 什么错误?另外,请发minimal reproducible example
  • 我已经添加了示例和错误描述
  • 请将完整错误消息编辑到您的问题中,以便例如阅读的人可以确定错误发生在哪一行。并且请将您问题中的代码编辑为minimal reproducible example - 我应该能够将代码粘贴到一个文件中并不添加任何内容运行它以查看您看到的错误。
  • 我已根据您的建议更改了答案。现在遵循你对我说的原则

标签: python python-3.x python-2.7 indexing


【解决方案1】:

尝试:

for i in range(index, 12):
    defaults[i]=totale

【讨论】:

  • @Jfix91 - 您想要的结果显示一个列表,其中第 6 项及以后的项目设置为 5,而此答案将从第 7 个元素(位置 6 的元素)开始 5s。哪个是您想要的结果 - 此答案中的结果,还是您问题中的结果?
【解决方案2】:

我不清楚变量类型是什么,但是你可以使用一个简单的for循环

index=month
for i in index:
    fondo_immobbilizzazioni_mat[tipologia][i] = totale

注意,只有当月份是列表/数组类型时才有效。

【讨论】:

  • 给我同样的错误:'int' object is not iterable
【解决方案3】:

给定indextotale 的值,您只需执行以下操作:

defaults = [0] * index + [totale] * (12 - index)

另一种选择,阅读起来稍微复杂一些,但(可能)稍微更节省内存,因为它不会创建任何临时列表,它是:

defaults = [0 if i < index else totale for i in range(12)]

你使用哪一个其实并不重要,只要这条线没有被调用太多次。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-20
    • 2018-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-20
    相关资源
    最近更新 更多