【问题标题】:for loops in Python: list assignment index out of rangePython中的for循环:列表分配索引超出范围
【发布时间】:2019-12-01 18:42:39
【问题描述】:

我对 Python 很陌生。我必须写一个for循环。例如,有 2 个文件,比如说“文件”。我需要从每个中提取数据。我的代码如下,但是,它一直给我错误:

列表分配索引超出范围。

我已经搜索了现有的答案,但很抱歉我不明白如何申请我的案例。非常感谢。

import xarray as xr
ds = []
for i in range(0,2):
       ds[i] = xr.open_dataset(files[i])

【问题讨论】:

标签: python-3.x


【解决方案1】:

只要做:

ds = []
for file in files: 
    ds.append(xr.open_dataset(file))

您根本不需要使用索引。

在构建列表时更短更简洁,您可以使用列表推导:

ds = [xr.open_dataset(file) for file in files]

【讨论】:

  • 谢谢!太棒了(我在 Python 的第一天!)
【解决方案2】:

您有两种方法可以实现这一目标,即 appendinsertappend 用于在列表末尾添加内容,而insert 可以在列表的任何位置插入元素。 到目前为止,您正在尝试向空白列表添加一些元素,因此append 是一个不错的选择。 您的问题的最佳答案是:


for file in files: 
    ds.append(xr.open_dataset(file))

【讨论】:

  • 谢谢!太棒了(我在 Python 的第一天!)
【解决方案3】:

您不必像在 C 中那样使用索引列表。只需使用 append()。此外,您还需要声明 files 列表,用于存储文件。并且可以调用range方法,长度为files列表。

方法一,带索引和经典for循环:

import xarray as xr
ds = []
for i in range(len(files)):
       ds.append(xr.open_dataset(files[i]))

方法二,无索引和for each循环:

import xarray as xr
ds = []
for file in files:
       ds.append(xr.open_dataset(file))

方法3,使用list comprehension

import xarray as xr

ds = [xr.open_dataset(file) for file in files]

【讨论】:

  • 它起作用了,根据您的示例,我还成功地将以下步骤添加到循环中。非常感谢。真诚的。
猜你喜欢
  • 2020-07-23
  • 2019-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-03
  • 1970-01-01
相关资源
最近更新 更多