【问题标题】:Python printing the first item of each nested list with a single print commandPython 使用单个打印命令打印每个嵌套列表的第一项
【发布时间】:2020-04-19 20:37:11
【问题描述】:

我想知道为什么这段代码不输出每个嵌套列表的第一项。 我找到了一个可行的替代方案,但我想知道为什么这个不输出所需的输出。

tableData = [
['apples', 'oranges', 'cherries', 'banana'],
['Alice', 'Bob', 'Carol', 'David'], 
['dogs', 'cats', 'moose', 'goose']]
print(tableData[:][1])

【问题讨论】:

  • print(list(zip(*tableData))[0]) 将打印所有第一个元素
  • 为什么你认为切片符号也会导致迭代作为副作用?

标签: python list nested items


【解决方案1】:

这不起作用,因为tableData[:] 返回整个列表。它相当于tableData(没有[:])。正如 Josh 所发布的,您可以使用列表推导式来获取您想要的元素。

【讨论】:

  • 是的,但我添加了第二对方括号来指定整个列表中我需要的内容。
【解决方案2】:

tableData[:] 返回整个列表。所以tableData[:][1]只返回tableData中的第二个元素,也就是你的列表['Alice', 'Bob', ...]

您可以使用列表推导式获取每个列表的第一个元素:

print [sublist[0] for sublist in tableData]

上面的代码等价于:

first_elements = []
for sublist in tableData:
    first_elements.append(sublist[0])
print first_elements

【讨论】:

  • 我找到了一个解决方案,但我想知道为什么我的代码不能像我认为的那样工作。
  • @MehdiRezzagHebla in numpy/pandas 你的语法是正确的,但就像tableData[:,1]
【解决方案3】:

因为tableData[:] 表示整个列表,它只是tableData 的一个副本。所以tableData[:][1]tableData 中的第一个(第二个)项目,在您的代码中是['Alice', 'Bob', 'Carol', 'David']

【讨论】:

  • 非常感谢。
【解决方案4】:

您应该使用[0] 这将获取列表中的第一个元素,然后您执行 for 循环来遍历列表中的每个元素,例如:

tableData = [
['apples', 'oranges', 'cherries', 'banana'],
['Alice', 'Bob', 'Carol', 'David'], 
['dogs', 'cats', 'moose', 'goose']]
for i in tableData:
    print(i[0])

我希望这是有道理的。

【讨论】:

    【解决方案5】:
    print([i[0] for i in tableData])
    

    【讨论】:

      【解决方案6】:

      这里是这个的代码 提供干净的空间分离输出 print(*[i[0] for i in tableData]) 在你的 tableData[:] 将评估为 TableData 然后 TableData[1] 将评估为 ['Alice', 'Bob', 'Carol', 'David']

      【讨论】:

        【解决方案7】:

        [ from: to] 运算符表示切片 -> 返回新字符串。

        例如:

        lst = [0, 1, 2, 3] 
        lst[0:2] #will return [0, 1]
        

        [ : ] 将按原样返回列表。

        所以如果你想访问第一个值类型: lst[0] 在您的代码中,您键入了 tableData[1],因此它返回第二个索引,因为索引从零开始

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-11-26
          • 1970-01-01
          • 1970-01-01
          • 2021-03-02
          • 2015-08-11
          • 2013-01-27
          相关资源
          最近更新 更多