将布尔值添加到列表会导致TypeError

时间:2019-08-20 16:48:57

标签: python

我创建了一个空白列表,并尝试向该列表添加一个布尔值。但是,我遇到了一些不同的错误。我是Python的新手,所以任何解释都将对您有所帮助。

我想做的是:

    new_list=[]
    new_list[0] = True #ERROR: TypeError: 'type' object does not support item assignment

    new_list=[]
    new_list.append(True) #ERROR: TypeError: descriptor 'append' requires a 'list' object but received a 'bool' 

更准确地说,我正在尝试通过循环发送此消息

    new_list=[]
    for arg in args:
        if (arg == 'foo' or arg == 'bar'):
            new_list[arg] = True

很显然,第一个块中的错误是因为列表不接受正在传递的布尔值。第二个也是提供类似的错误。但是,由于这是一个空白列表,因此不接受任何输入吗?

我已经尝试遵循this,但是看起来这可能行不通。

谢谢。

3 个答案:

答案 0 :(得分:3)

new_list = []创建一个空列表。第一次尝试时,您尝试访问new_list[0],但是列表中的第一位([0])不存在,因为列表为空。

要将值添加到列表中时,需要使用append。因此,第二次尝试是正确的,应使用:new_list.append(True),但是定义空列表的第一行是错误的。您使用了new_list[]而不是new_list = []

关于new_list[]的用法,这是语法错误。如果要定义一个空列表,则应使用new_list = []new_list = list()

答案 1 :(得分:0)

如果要跟踪arg(如果是“ bar”或“ foo”)的名称,则可以尝试如下操作:

    list = []
    for arg in args:
        if arg == 'foo' or arg == 'bar':
            argDic = { arg: True }
            list.append(argDic)

    print(list)
    # [{'foo': True}, {'bar': True}]

答案 2 :(得分:0)

new_list = [] #creates a new list
new_bool_list = [True]*10 # creates a list size 10 of booleans

在python中,您不必设置列表的大小,您可以创建一个空列表并将其添加到列表上。

new_list = []
new_list.append(True)
print(new_list)

--------------
output:
[True]

对于循环问题,取决于您的参数。 new_list[arg] = True通常是您在字典(其他语言的HashMap)中设置值的方式。我认为您最好对预期的问题进行研究。