【问题标题】:Assigning variable names with a 'for' loop in Python, when number of variables is unknown当变量数量未知时,在 Python 中使用“for”循环分配变量名
【发布时间】:2018-05-14 10:26:23
【问题描述】:

我是 Python 和 Stacks Overflow 的新手。我正在尝试将变量名称分配给 np.xml 中的一维列数组。矩阵数据集。总数据列的数量是未知的,所以我无法手动命名这些列。但是我知道感兴趣的列从数据集的第三列开始,即它们从 -Data[:,2]- 开始。我的问题是;当列的总数未知时,如何为所有感兴趣的“列数组”分配变量名称?即

Assignment 1 = Data[:,2]
Assignment 2 = Data[:,3]
Assignment 3 = Data[:,4]
Assignment 4 = Data[:,5]
...
Assignment N = Data[:,N+1]

我尝试过使用 for 循环...!以下代码不起作用!

# Create index, to compute the amount of columns of interest. "Data" is a np
# array 

    cols= Data.columns[2:]

# i from column 2 to last column 

    for i in range(2,(len(cols))):

        +Assigment(i-1) = Data[:,i]
        # Variabel name = 'slice' of column data

我的输入看起来像这样;

所需的输出将是列值的一维数组,即

任何想法将不胜感激。

Python 3.6.1 64 位,Qt 5.6.2,达尔文上的 PyQt5 5.6

【问题讨论】:

  • 您能否提供一个输入和所需输出的示例?
  • 你的方法是正确的。您可以查看此帖子以动态分配名称。 stackoverflow.com/questions/4010840/…
  • 在这种情况下,通常您根本不会使用单个独立变量。您可以改用list,然后在循环中用append 填充它。索引等也变得更容易了
  • 感谢您的宝贵时间。我试过assignments = [Data.columns[:,i+1] for i in range(1,len(cols)-1)] 导致python 错误IndexError: too many indices for array。我玩弄了你的代码并得到了assignments = [correctedgrades.columns for i in range(2,len(cols))],结果就是这样; [RangeIndex(start=0, stop=5, step=1), RangeIndex(start=0, stop=5, step=1), RangeIndex(start=0, stop=5, step=1)]如何让它从第 3 列开始( start =2)?

标签: python-3.x for-loop variable-assignment data-handling


【解决方案1】:

您不想动态分配变量名称。你想要一个清单。您可以使用list comprehension 构建它:

assignments = [Data.columns[:,i+1] for i in range(1,len(cols)-1)]

然后你可以在例如这样的循环中使用这个列表:

for assignment in assignments:
   #do something

您也可以使用 assignments[i] 访问作业 i。

【讨论】:

  • 感谢您抽出时间colopop。我试过assignments = [Data.columns[:,i+1] for i in range(1,len(cols)-1)] 导致python 错误IndexError: too many indices for array
猜你喜欢
  • 2012-02-26
  • 2015-07-07
  • 1970-01-01
  • 2019-08-11
  • 1970-01-01
  • 2019-11-10
相关资源
最近更新 更多