为什么在python中使用+=来添加到一个列表中,而不使用方括号,每次只添加一个字符?

问题描述 投票:0回答:1

我想知道为什么在计算上,在没有使用方括号封装值的情况下,使用+=添加到一个列表中,结果是每次只添加一个字符作为元素。

我希望这个问题是清楚的,下面是一个例子。

In:


def generate_sentences(subjects, predicates, objects):
    lst1 = []
    lst2 = []
    lst3 = []
    lst4 = []
    lst5 = []
    subjects = sorted(subjects)
    predicates = sorted(predicates)
    objects = sorted(objects)
    for i in subjects:
        for j in predicates:
            for k in objects:
                lst1 += i + " "
                lst2 += (i + " ")
                lst3 += [i + " "]
                lst4.append(i + " ")
                lst5.append([i + " "])


    print("+= no paren: ")
    print(lst1)
    print(" ")
    print("+= paren: ")
    print(lst2)
    print(" ")
    print("+= brackets: ")
    print(lst3)
    print(" ")
    print("append standard: ")
    print(lst4)
    print(" ")
    print("append with brackets: ")
    print(lst5)



generate_sentences(["John", "Mary"], ["hates", "loves"],\
    ["apples", "bananas"])

generate_sentences(["Vlad", "Hubie"], ["drives"],\
["car", "motorcycle", "bus"])

Out:


+= no paren: 
['H', 'u', 'b', 'i', 'e', ' ', 'H', 'u', 'b', 'i', 'e', ' ', 'H', 'u', 'b', 'i', 'e', ' ', 'V', 'l', 'a', 'd', ' ', 'V', 'l', 'a', 'd', ' ', 'V', 'l', 'a', 'd', ' ']

+= paren: 
['H', 'u', 'b', 'i', 'e', ' ', 'H', 'u', 'b', 'i', 'e', ' ', 'H', 'u', 'b', 'i', 'e', ' ', 'V', 'l', 'a', 'd', ' ', 'V', 'l', 'a', 'd', ' ', 'V', 'l', 'a', 'd', ' ']

+= brackets: 
['Hubie ', 'Hubie ', 'Hubie ', 'Vlad ', 'Vlad ', 'Vlad ']

append standard: 
['Hubie ', 'Hubie ', 'Hubie ', 'Vlad ', 'Vlad ', 'Vlad ']

append with brackets: 
[['Hubie '], ['Hubie '], ['Hubie '], ['Vlad '], ['Vlad '], ['Vlad ']]
python python-3.x list append element
1个回答
1
投票

我想我明白你的问题了,请告诉我是否正确:).因此,这种行为有几个方面的问题,首先,append和+=的区别在于.+=将2个列表合并成一个列表。

+= 将两个列表合并成一个列表。

append则是在一个列表中添加一个元素。

所以从根本上讲,它们不是一回事。

第二,一个字符串基本上是一个字符列表,所以当你做这个动作时,你基本上是在做:+=。

mylist += "a word"

你基本上是在做这个 。

mylist += ['a', ' ', 'w', 'o', 'r', 'd']

试着用+=添加一个int到你的列表中,会出现这种情况。

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable

在另一端,如果你使用append添加一个整数,它将工作,因为它不是添加一个列表,而是添加一个可以是任何类型的项目。

我想我已经回答了你的问题,如果你需要澄清,请告诉我:)

© www.soinside.com 2019 - 2024. All rights reserved.