【问题标题】:Python list with constant value具有常量值的 Python 列表
【发布时间】:2015-04-02 01:08:10
【问题描述】:

我真的很喜欢 python 用它的简写 for 循环来缩短事情的可能性——但有时,我需要多次获取一个包含一个值的列表,我做了以下方式:

plot(seconds, [z0 for s in seconds], '--')

但是出于审美原因,未使用的s 确实让我感到不安。

有没有更短(更漂亮)的方法?像某些值的特殊“乘法”?

【问题讨论】:

  • 您可以使用多个列表:[1] * 3 -> [1, 1, 1].
  • 未使用变量的通常名称是_,除非你可以摆脱它
  • 虽然有时_ 用于本地化字符串...而其他时候它是python shell 提供的自动填充上下文变量...
  • @njzk2 和 @Joran:我一直看到双下划线 __ 被用作“垃圾”变量,特别是为了避免与单下划线 _ 的其他用途发生冲突,例如交互式解释器和gettext module。作为奖励,虽然前导下划线使其对from <module> import * 不可见,但它不足以触发class-private name mangling

标签: python arrays list code-formatting


【解决方案1】:

你的意思是:

[z0] * len(seconds)

【讨论】:

  • 我不知道这是一件事...是时候了解基础了
  • @AdamHughes 正如 Joran Beasley 在他的回答中所说,该列表是对同一对象的多个引用。因此,如果对象可以改变(如列表或字典),那么对一个元素的更改将反映在其他每个元素上(因为它们是同一个对象)。但是,如果对象是不可变的(例如字符串或数字,或元组),这是安全的。
  • 感谢您指出这一点,我根本不会意识到这一点。
【解决方案2】:

取决于 z0 是什么

 [z0]*len(seconds)

在 z0 是可变数据类型的情况下,这不会像您希望的那样工作

【讨论】:

    【解决方案3】:

    我觉得你这样做的方式并没有那么肮脏......但是numpy.fill函数更整洁一些:

    In [4]: import numpy as np
    In [5]: x=np.empty(5)
    
    In [6]: x.fill(8)
    
    In [7]: x
    Out[7]: array([ 8.,  8.,  8.,  8.,  8.])
    

    【讨论】:

      猜你喜欢
      • 2022-07-22
      • 2011-02-25
      • 1970-01-01
      • 1970-01-01
      • 2020-03-07
      • 2022-06-15
      • 2021-06-07
      • 2012-08-05
      相关资源
      最近更新 更多