【问题标题】:Why use the list() constructor?为什么使用 list() 构造函数?
【发布时间】:2019-12-21 22:13:43
【问题描述】:

我只是想知道list()构造函数的用途,因为如果我们想创建一个新的列表就可以使用方括号,list()构造函数的具体用途是什么。

newGrocerylist = list(("apple", "guava", "mango", "pineapple", "orange")) #Why use the list() constructor.
print(newGrocerylist)

#We can also do like this--

newGrocerylist = ["apple", "guava", "mango", "pineapple", "orange"]
print(newGrocerylist)

为什么要使用列表构造函数?这不是多余的事情吗--

newGrocerylist = list(("apple", "guava", "mango", "pineapple", "orange"))

【问题讨论】:

  • 虽然这很基本,但我认为它不是上述任何一个的副本。我会检查“X 用于什么”是否是一个有效问题。
  • 确实,问题本身清楚地表明 OP 确实知道列表构造函数的作用。他们想知道何时使用它来做到这一点。这是一个不同的问题。可能是固执己见,但我什至不这么认为,因为对于何时使用 list() 达成了普遍共识。绝对不是重复的。

标签: python python-3.x


【解决方案1】:

如果你想创建一个包含一堆新值的字面新列表,那么你是对的。没有理由使用列表构造函数,您应该使用文字符号:

my_list = ['a', 'b', 'c']

实际上,使用构造函数创建一个包含一堆值的新列表是不可能的,你只能用它来将可迭代对象转换为它们的列表表示:

my_tuple = ('a', 'b', 'c')  # literal notation to create a new tuple
my_list = list(my_tuple)    # this is what you actually did in your first example

您可以以类似的方式使用其他可迭代构造函数,例如 setdict。它们不用于创建新对象,而是将现有对象转换为它们所描述的类型。

【讨论】:

    【解决方案2】:

    也许我们想将MapSet 转换为list。我们会将它传递给构造函数。

    mylist = list(myset)
    

    【讨论】:

    • 是的,为了选角,我是新人,当时正在学习,现在我知道了,谢谢! :)
    【解决方案3】:

    在最初的语句中,您创建了一个元组(用圆括号表示)并将其转换为list()。在第二个示例中,您直接创建了一个列表(使用方括号)。

    【讨论】:

      【解决方案4】:

      它们在所有情况下的行为都不相同。例如,您可以构建一个字典键列表,或创建一个包含一个元素(一个字典)的列表。

      >>> list({1:2})
      [1]
      >>> [{1:2}]
      [{1: 2}]
      

      【讨论】:

        【解决方案5】:

        list 可以作为函数对象传递。

        因此,作为一个玩具示例,您可以拥有一个创建任意集合的函数,并且您可以传入 listset

        def make_collection_from_data(data, collection_maker):
            return collection_maker(data)
        
        data = [1, 2, 3, 4]
        
        make_collection_from_data(data, set) # Returns a list
        make_collection_from_data(data, list) # Returns a set
        

        【讨论】:

          【解决方案6】:

          当有字符串时,我们主要使用 Constructorlist()。

          vowel_string = 'aeiou'
          print(list(vowel_string))
          

          输出

          ['a','e','i','o','u']
          

          【讨论】:

            【解决方案7】:

            查看:[] and {} vs list() and dict(), which is better?

            看起来 dicts 的构造函数 [] 或 {} 比 list() 或 dict() 快得多。

            【讨论】:

            • 这应该被充实,或者用一个接近重复的投票代替。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-08-07
            • 2022-11-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多