【问题标题】:Python - Question about initialising lists with [None] versus with just []Python - 关于使用 [None] 与仅 [] 初始化列表的问题
【发布时间】:2020-12-16 22:03:17
【问题描述】:

我目前正在遍历一些字符串列表以填充新列表。最初我有:

z_locations = ['50', '100', '150', '250', '500']
path = [None]
for counter, value in enumerate(z_locations):
   path.append('Desktop/Data/z_' + value)

我的列表 path 将作为长度为 6 的列表出现,而我的新列表 path 中的第一个元素将只是 NoneType。我可以通过更改为:

z_locations = ['50', '100', '150', '250', '500']
path = []
for counter, value in enumerate(z_locations):
   path.append('Desktop/Data/z_' + value)

这删除了NoneType 作为第一个元素,并且只按照我最初的意图进行复制。但是,我不确定为什么会发生这种情况。在创建新列表之前,我没有遇到过这个NoneType。有人能告诉我为什么会这样吗?

谢谢。

【问题讨论】:

  • [None] 是一个包含一个元素的列表。 None 是一个对象,它的类型是NoneType。如果你想要一个空列表,你想要[]。是什么让您认为应该使用[None]
  • “但是,我不确定为什么会发生这种情况。” 因为您将None 放入您的列表中
  • 我可以说@Juanpa 我的问题是“我不确定为什么这不起作用”,而您的回答基本上是在嘲弄“它不起作用,因为它不起作用” ',这并不完全有帮助。人们会问愚蠢的问题——有时这就是我们学习的方式。

标签: python list nonetype


【解决方案1】:

这是因为append 在列表末尾添加了一个元素。您的列表已准备就绪,其中包含None,因此您添加的任何元素都将放在它之后,例如[None, ...]。因此,当您获得第一个元素时,它会为您提供None

【讨论】:

  • 抱歉,删除了我的评论。这是我之前遇到的一个单独的问题,它会说list assignment out of range。不过我还是回去看看吧
  • 哦,有道理。这是因为当您这样做时,您的列表为空path = []。因此没有索引 0。如果您来自另一种编程语言,例如 java,其中数组使用空值初始化,这可能很难掌握。但是在 Python 中,列表是空的,直到你添加一个元素。如果您在path 列表中输入空白值,path = [None for _ in z_locations] 那么您的path[counter] = ... 将起作用。 out of range 表示您正在尝试使用不存在的索引。
  • 噢噢噢噢!谢谢!是的,我来自其他语言。这很有意义。谢谢你咸
猜你喜欢
  • 1970-01-01
  • 2018-01-27
  • 1970-01-01
  • 1970-01-01
  • 2022-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多