【问题标题】:Python - Store varying number of elements in a list?Python - 在列表中存储不同数量的元素?
【发布时间】:2014-02-15 16:11:36
【问题描述】:

这篇文章遵循我之前的问题: Split list into different variables

我意识到我会在一个列表中有多个元素块,这些元素可能并不总是限制为 3 个。例如,我可以:

[('love', 'yes', 'no'), ('valentine', 'no', 'yes'), ('day', 'yes','yes'), 
   ('house', 'yes','no'), ('car', 'yes','yes')]

[('love', 'yes', 'no'), ('valentine', 'no', 'yes'), ('day', 'yes','yes'), 
   ('house', 'yes','no'), ('car', 'yes','yes'), ('balloon', 'no','no'), 
   ('roses', 'yes','yes')]

var1, var2, var3 = listobj 仅适用于其中三个元素块。但更重要的是,一般来说,我如何将所有这些元素块存储到不同的变量中?

【问题讨论】:

  • 您真的需要将所有元素存储在不同的变量中吗?不能从列表中选择一个元素吗?
  • 是的,这将使我更容易处理数据块
  • 不,不会。因为正如您所说:您并不总是拥有三个元素,因此您必须处理可变数量的变量。这并不容易。
  • @poke 好吧,出于我的应用目的,我需要单独存储它们。我使用了allCols = [[] for x in range(0, colCount)],其中colCount 是行中的列数。以后索引它们应该不是问题,我不介意索引从列表中获得的块。

标签: python


【解决方案1】:

变量在您的代码中显式声明,因此您可以使用的变量数量是确定的,无法将长度未知的元组(或列表)解压缩为确定数量的变量。但是你可以在python3中使用*来制作extended iterable unpacking

>>> a, *b, c = range(5)
>>> a
0
>>> c
4
>>> b
[1, 2, 3]

【讨论】:

  • 好主意。但是,我使用这一行解决了我的问题:allCols = [[] for x in range(0, colCount)] 其中colCount 是行中的列数。然后,我只是在allCols[colCount-1] 中指明我想要访问的索引,以提取最后一个元素集或任何相关的集合。
  • @Eagle 是的,这是在可迭代对象中引用元素的常用方法
【解决方案2】:

如果listobj的长度不确定,直接将其作为列表使用,而不是将其解包到变量中。

拆开不同大小的列表没有任何意义。假设您可以动态地将listobj 解压缩为尽可能多的变量(如 var1、var2、var3...,只要需要)。您将如何编写使用这些变量的代码?你突然需要知道他们的号码和一些聪明的方法来索引一个特定的,或者循环他们。你猜怎么着——这就是为什么你首先要有列表的原因。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-08
    • 2012-04-11
    • 1970-01-01
    • 2021-11-15
    • 2012-11-19
    相关资源
    最近更新 更多