【问题标题】:Create a list with 6 items创建一个包含 6 个项目的列表
【发布时间】:2020-03-26 15:10:36
【问题描述】:

我需要创建一个包含 6 个元素的列表,我通过循环执行此操作,以便它对数组 ingreso_datos 内的每一行数据执行此操作。

在此过程中,我创建了一个名为 counters 的列表,其中还有另一个包含 6 个元素的列表,但我正在寻找的只是创建一个包含 6 个元素的列表。

描述我的问题的图片:

我还在了解列表中的语法,python 是我的第一门编程语言,感谢反馈,问候

ingreso_datos = [[ 1,    'C',    28,    29,    30,    19,    20,     21,      0,      0,      0,    2.5,    'HEB',    200],
                 [ 2,    'C',    31,    32,    33,    22,    23,      24,    4.5,      0,    4.5,    2.5,    'HEB',    200],
                 [ 3,    'C',    34,    35,    36,    25,    26,      27,    9.5,      0,    9.5,    2.5,    'HEB',    200],
                 [ 4,    'C',    19,    20,    21,    10,    11,      12,      0,    2.5,      0,      5,    'HEB',    200],
                 [ 5,    'C',    22,    23,    24,    13,    14,     15,    4.5,    2.5,    4.5,      5,    'HEB',    200],
                 [ 6,    'C',    25,    26,    27,     6,    17,      18,    9.5,    2.5,    9.5,      5,    'HEB',    200],
                 [ 7,    'C',    10,    11,    12,     1,     2,       3,      0,      5,      0,    7.5,    'HEB',    200],
                 [ 8,    'C',    13,    14,    15,     4,     5,       6,    4.5,      5,    4.5,    7.5,    'HEB',    200],
                 [ 9,    'C',    16,    17,    18,     7,     8,       9,    9.5,      5,    9.5,    7.5,    'HEB',    200],
                 [10,    'B',    19,    20,    21,    22,    23,      24,      0,    2.5,    4.5,    2.5,    'HEB',    200],
                 [11,    'B',    22,    23,    24,    25,    26,      27,    4.5,    2.5,    9.5,    2.5,    'HEB',    200],
                 [12,    'B',    10,    11,    12,    13,    14,      15,      0,      5,    4.5,      5,    'HEB',    200],
                 [13,    'B',    13,    14,    15,    16,    17,      18,    4.5,      5,    9.5,      5,    'HEB',    200],
                 [14,    'B',     1,     2,     3,     4,     5,       6,      0,    7.5,    4.5,    7.5,    'HEB',    200],
                 [15,    'B',     4,     5,     6,     7,     8,       9,    4.5,    7.5,    9.5,    7.5,    'HEB',    200]] 


for i  in range(len(ingreso_datos)):

    counters = []

    counters.append([ingreso_datos[i][2], ingreso_datos[i][3], ingreso_datos[i][4],
                     ingreso_datos[i][5], ingreso_datos[i][6], ingreso_datos[i][7]])

【问题讨论】:

  • 您将新列表附加到 counters 而不是 6 个项目
  • 使用此代码,您将只能从记录 15 中检索数据。这是因为每次循环时,您都会创建一个新的“计数器”列表,该列表将为空。如果你真的想追加,你应该在你的 for 循环之外创建一个空列表。
  • for循环之前移动counters[]

标签: python list syntax


【解决方案1】:

鉴于您当前的结构,请尝试使用.extend 而不是.append。试试下面的:

counters.extend([ingreso_datos[i][2], ingreso_datos[i][3], ingreso_datos[i][4],
                     ingreso_datos[i][5], ingreso_datos[i][6], ingreso_datos[i][7]])

【讨论】:

  • 非常感谢,解决方法已经很简单了,我会考虑到我的学习,最好的问候
【解决方案2】:

如果你想在ingreso_datos的每一行中提取元素2-7,你可以写

counters = []
for i in range(len(ingresso_datos)):
    counters.append(ingresso_datos[i][2:8])

现在 counters[0] 将是第一行中的值 2-7,counters[1] 将是第二行中的值,依此类推。做同样事情的更紧凑(也更快)的方法是

counters = [ingresso_datos[i][2:8] for i in range(len(ingresso_datos))]

这被称为列表生成器,如果您继续使用 python,您不妨熟悉它们 :) 如果您想要 所有 one中的 2-7 个值> 列表(不是列表列表),您可以按照建议使用 .extend 或:

counters = [x for x in ingresso_datos[i][2:8] for i in range(len(ingresso_datos))]

“长”形式将是双 for 循环:

counters = []
for i in range(len(ingresso_datos)):
   for x in ingresso_datos[i][2:8]:
       counters.append(x)

【讨论】:

    【解决方案3】:

    也许你想要的是这样的。

    counter = []
    for x in range(2,8):
       counter.append(ingreso_datos[x][0])
    

    这应该返回 [3,4,5,6,7,8],其中每个值都来自 ingreso_datos 列表中的每个第一个索引。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多