我创建了一个空白列表,并尝试向该列表添加一个布尔值。但是,我遇到了一些不同的错误。我是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,但是看起来这可能行不通。
谢谢。
答案 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)中设置值的方式。我认为您最好对预期的问题进行研究。