【问题标题】:How can I create a loop that will give me lists with names in increasing numerical order?如何创建一个循环,以增加数字顺序为我提供名称列表?
【发布时间】:2017-12-11 22:51:19
【问题描述】:

我需要一个可以给我的代码

bin1= []
bin2= []
...
...
bin(Numbins)= []

这是我的尝试:

所以在我的代码的前面,我创建了 PriceDiffList 和 DataList 列表。 这是我遇到问题的代码部分

Numbins = (1/4)* len(DataList)

print(Numbins)

a1 = Numbins % len(PriceDiffList)

print(a1)

for i in range(1, a1):

    for 'n' in range (1, numbins):

        bin'n' = PriceDiffList[[(i-1)*Numbins] : [i*Numbins]]

        bin'n + 1' = bin'n'

        print (bin'n')

但这不起作用。这是错误消息:

File "<ipython-input-16-1c0c8c3e71aa>", line 41
    bin'n' = PriceDiffList[[(i-1)*Numbins] : [i*Numbins]]
         ^
SyntaxError: invalid syntax

还有其他想法吗?我可能会使用 zip 或 append,但我不确定如何正确写出。

【问题讨论】:

  • 邮政编码作为文本,而不是作为图像。另外,解释一下“不起作用”是什么意思。
  • 那么,您的尝试在哪里?为什么需要xxx1xxx2 等形式的变量?这总是一个坏主意。相反,您应该只有一个列表xxx_list,其中xxx1 等效于xxx_list[0]
  • 看,我对 python 还很陌生,而且是自学的。如果你能帮我得到一个答案,让我有这些名字的列表,我真的很感激。
  • bin'n + 1' 不是有效的 python 合成器
  • 因此,您似乎正在尝试将变量视为数据。一些脚本语言实际上允许这样做,但它不在 Python 中(通常是一种不好的方法,它会导致难以推理代码)。相反,听起来您想使用 list (因为,您想将一堆按递增整数索引的对象分组)。

标签: python python-3.x


【解决方案1】:

如果你真的想要这样的变量名,你必须使用execeval。但是,我建议不要这样做,因为 eval 是邪恶的

for n in range (1, numbins):
    exec('bin'+str(n)+' = PriceDiffList[[(i-1)*Numbins] : [i*Numbins]]')
    exec('bin'+str(n + 1)+' = bin'+str(n))
    print eval('bin'+str(n))

【讨论】:

  • 我收到此错误消息:文件“”,第 40 行 print eval('bin'+str(n)) ^ SyntaxError: invalid syntax where箭头指向 eval。我必须导入什么才能使用 eval 吗?
  • @StephSmelewski 不,(尽管您*真的不应该为此使用eval),您可能只是在某处缺少右括号...
【解决方案2】:

这应该有帮助..

from collections import  defaultdict
some_dict=defaultdict(list)

    for n in range (1, numbins):
        some_d["bin"+str(n)] = PriceDiffList[[(i-1)*Numbins] : [i*Numbins]]

        some_d["bin"+str(n+1)]= some_d["bin"+str(n)]

    print (some_d["bin"+str(n)])

【讨论】:

  • 我收到一条错误消息:TypeError: 'type' object is not subscriptable
  • some_dict=defaultdict(list),不是some_dict=defaultdict[list]
猜你喜欢
  • 2020-10-08
  • 1970-01-01
  • 2015-01-13
  • 2021-12-04
  • 1970-01-01
  • 2015-09-05
  • 1970-01-01
  • 2016-05-06
  • 1970-01-01
相关资源
最近更新 更多