【问题标题】:python for loop output as listpython for循环输出为列表
【发布时间】:2017-10-01 19:34:34
【问题描述】:

我需要对数组中的一系列元素进行一些计算。

所以,在我的 views.py 中,我的代码是:

(...)
for f in enumerate(array)
    calc1 = value_x
    calc2 = value y
(...)

例如,当我打印 calc1 时,我的输出返回

1
1
1
1
1
0.98
1
1
1
1
1
1

而且,我的输出必须是这样的

['1', '1', '1', '1', '1', '0.98', '1', '1', '1', '1', '1', '1']

我已经尝试过做类似的事情

testLi = []
for f in enumerate(array):
    testLi.append(str(TPR_class))
print 'testLI {}'.format(testLi)

但它给了我

testLI ['1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1']
testLI ['1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1']
testLI ['1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1']
testLI ['1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1']
testLI ['1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1']
testLI ['0.98', '0.98', '0.98', '0.98', '0.98', '0.98', '0.98', '0.98', '0.98', '0.98', '0.98', '0.98']
testLI ['1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1']
testLI ['1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1']
testLI ['1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1']
testLI ['1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1']
testLI ['1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1']
testLI ['1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1']

有人可以帮帮我吗?

谢谢。

【问题讨论】:

  • 什么是 TPR_class?
  • 你的阵列是什么?它是一个列表吗,dict?
  • TPR_class 是我的变量名
  • 和我的数组是一个子类别列表,我正在深入我的 csv 列,以便我可以过滤并获取我的计算。我不知道我是不是直言不讳
  • 我加载一个 csv 文件并根据特定列过滤数据。然后对于这些过滤器中的每一个,我必须计算不同的相应记录并进行一些额外的计算。由于数组的大小始终不变,因此我通过 for 循环进行计算,以便动态获取结果

标签: python django for-loop output


【解决方案1】:

由于您需要将值作为列表输出,因此如果可能,我建议您使用列表推导而不是 for 循环。它更快更容易阅读,并且应该产生您想要的结果。例如,如果您需要打印的值存储在 array 中,我将使用以下代码:

[str(x) for x in array]

通过在代码周围使用硬括号,每个值在评估后编译成一个列表作为字符串值。

希望这对您有所帮助。

【讨论】:

    【解决方案2】:

    使用 enumerate() 返回包含数组索引的元组及其值 (0,'item1') (1,'item2') 等。但是考虑到您对“x”的兴趣,我将假设您的输入实际上是一个字典,并且您对键列表 ('key1','item1') ('key2','item2') 等感兴趣。

    如果您使用的是 Python3,请在字典上使用 items() 以获取序列上的迭代器。并使用 key,value 的循环快捷键在循环进行时立即提取每个项目的键和值。

    然后使用list comprehensions,您可以在一行中构建最终列表:

    mydict = {'a':'b','c':'d','f':'g'}
    print([str(x) for x,y in mydict.items()])
    

    如果您不需要值部分而只需要键,则可以简化为

    print([str(key) for key in mydict])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-26
      • 1970-01-01
      • 2013-05-18
      • 1970-01-01
      • 1970-01-01
      • 2016-01-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多