【问题标题】:Build a 2D list of attributes from user input根据用户输入构建二维属性列表
【发布时间】:2018-04-15 12:41:16
【问题描述】:

我有兴趣学习如何构建一个二维列表,其中每一行在第一列中包含一个对象编号,在以下列中包含其属性。这将对用户定义的尽可能多的对象进行。它看起来像这样:

Object1 big heavy square

Object2 small heavy round

Object3 small light round

因此,如果用户说有八个对象,则循环会询问每个对象的对象编号、大小、重量和形状并填充列表。

【问题讨论】:

  • 我建议不要使用列表列表,而是使用namedtuple 列表(前提是这些条目可以是不可变的)
  • 感谢托比亚斯的回复。我不是真的跨元组,但我会根据你的建议做一些研究,看看我能弄清楚什么。干杯

标签: python list input


【解决方案1】:

您已经完成了上一段中的大部分工作。有几种方法可以做到这一点:

天真for循环:

objects = []
for index in range(1, 9):
    size = input("Size: ")
    weight = input("Weight: ")
    shape = input("Shape: ")
    objects.append(["Object" + str(index), size, weight, shape])

嵌套for循环:

names = ["Size", "Weight", "Shape"]
objects = []
for index in range(1, 9):
    object = ["Object" + str(index)]
    for name in names:
        object.append(input(name + ": "))

嵌套列表理解

names = ["Size", "Weight", "Shape"]
objects = [
    ["Object" + str(index)] + [
        input(name + ": ")
        for name in names
    ] for index in range(1, 9)
]

您可以看到每个版本都基于上一个版本。列表推导式是构建列表的一种简洁方式。您以前可能遇到过,也可能没有遇到过。

【讨论】:

  • 干杯 wizzwizz4,我会好好考虑你的建议。列表对我来说很新,所以我非常感谢您的帮助。
  • @Rodney 我建议通过The Python Tutorial 工作;这真的很有帮助。我没有使用它,因为它最初看起来太难了,但我发现自己偶尔会使用它作为语言中一些棘手部分的参考。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-20
  • 2017-08-27
  • 2013-10-03
  • 2015-08-13
  • 1970-01-01
  • 2020-11-25
相关资源
最近更新 更多