Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中向列表中的列表添加值_Python_List_Append - Fatal编程技术网

在Python中向列表中的列表添加值

在Python中向列表中的列表添加值,python,list,append,Python,List,Append,我对Python如此陌生,到目前为止,我唯一能编写代码的方法就是盲目地挥动键盘。因此,我相信有一个很好的理由可以解释为什么以下方法不起作用: l = [] grouping = compactlist.index(namelist[n]) l[grouping].append(start[n]) l[grouping].append(end[n]) 因此,我试图从开始列表中获取一个值,并将其添加到l中的列表中-它将是哪个列表取决于分组的值。(然后对end执行相同的操作)。这要求动态创建l中的

我对Python如此陌生,到目前为止,我唯一能编写代码的方法就是盲目地挥动键盘。因此,我相信有一个很好的理由可以解释为什么以下方法不起作用:

l = []

grouping = compactlist.index(namelist[n])
l[grouping].append(start[n])
l[grouping].append(end[n])

因此,我试图从
开始
列表中获取一个值,并将其添加到
l
中的列表中-它将是哪个列表取决于
分组
的值。(然后对
end
执行相同的操作)。这要求动态创建
l
中的列表,我认为这就是问题所在。

您可以像
l=[[],[]]
一样启动l,但实际上听起来更像是希望使用defaultdict作为数据结构。这可以动态创建您的列表,例如

>>> import collections
>>> thing = collections.defaultdict(list)
>>> thing[0].append('spam')
>>> thing[1].append('eggs')
>>> print thing
defaultdict(<type 'list'>, {0: ['spam'], 1: ['eggs']})
>>> thing[0]
['spam']
>>> thing[69]
[]
导入集合 >>>thing=collections.defaultdict(列表) >>>事物[0]。追加('spam') >>>事物[1]。追加('鸡蛋') >>>印刷品 defaultdict(,{0:['spam'],1:['eggs']}) >>>事物[0] [“垃圾邮件”] >>>事物[69] [] 尝试从

l = [[],[]]
这将为您提供一个包含两个空列表的列表,您可以使用已经编写的代码附加到其中任何一个

编辑

正如您在评论中提到的,您将需要两个以上的列表。如果您事先知道需要多少,那么您可以像这样扩展此技术:

l = [[] for x in range( number_of_lists )]
如果您事先不知道,或者如果您不一定要生成像0、1、2、3这样的好的正则数,那么您就不需要列表列表*。在这种情况下,您需要列表字典。@'在这种情况下,s的答案是最好的解决方案


*相反,您的
分组值可能是100、20000、300000等等。在这种情况下,您真的不需要列表。

Ack,我的错误<代码>分组
不会只得到0或1,可能会有更多的值。很抱歉现在编辑。@lowercaseeName
l=[[]]*列表的数量几乎肯定不是您想要的。它创建一个列表,其中包含对单个空列表的引用。通常人们不希望这样,因为这样做会使
l[n]的行为变得非常不直观;尝试在Python提示符下输入以下内容:
l=[[]]*10;打印l;l[3]。追加('wird');打印l
。要避免@Ben所说的内容,请使用
l=[[]for i in range(列表的数量)]
。如果您无法提前告知需要哪些键,这是一种方法。在顶层使用字典,而不是列表。而defaultdict意味着您不需要显式创建列表。使用
dict
defaultdict
的唯一潜在问题是键没有固有的顺序,这取决于您正在做什么以及是否(或如何)进行排序您想迭代它们的关联值。谢谢,我想我会尝试使用defaultdict。幸运的是,订购并不重要。