我的问题似乎很简单,但对于像我这样的python新手来说,这对我来说变得太复杂了,所以情况是这样的:
我需要使用如下列表:
L = [(a, b, c), (d, e, d), (etc, etc, etc), (etc, etc, etc)]并使每个索引都是一个单独的列表,这样我就可以从每个索引中提取特定的元素。问题是,我实际使用的列表包含数百个索引,比如上面的索引,而我不能做这样的事情:
L_new = list(L['insert specific index here'])对于每一个,因为这将意味着用与第一个列表的各个索引相对应的数百个列表来填充内存,在我看来,这将是非常耗时和消耗内存的。所以我的问题是,我如何分离这些索引,然后从它们中提取单独的部分,而不需要创建数百个单独的列表(至少不需要数百个单独的行来创建它们)。
发布于 2013-06-21 23:22:48
我可能误解了你的问题,但我倾向于说,实际上你不需要做任何事情就能够索引你的元组。看我的评论,但是:L[0][0]会给"a",L[0][1]会给"b",L[2][1]会给"etc",依此类推……
如果你真的想以一种干净的方式将其转换为列表,你可以使用列表理解:
cast = [list(entry) for entry in L]作为对你的评论的回应:如果你想跨维度访问,我建议使用列表理解。特别针对您的评论:
crosscut = [entry[0] for entry in L]回应评论2:这在很大程度上是一个真正有用的操作的一部分,称为切片。具体地说,要执行引用的操作,您需要执行以下操作:
multiple_index = [entry[0:3] for entry in L]根据您的可读性偏好,这里实际上有许多可能性:
list_of_lists = []
for sublist in L:
list_of_lists.append(list(sublist))
iterator = iter(L)
for i in range(0,iterator.__length_hint__()):
return list(iterator.next())
# Or yield list(iterator.next()) if you want lazy evaluation发布于 2013-06-21 23:20:54
你所拥有的是一个元组列表,像列表列表一样访问它们
L[3][2]将获取列表L中第三个元组中的第二个元素
发布于 2013-06-21 23:22:23
使用内部列表的两种方式:
for index, sublist in enumerate(L):
# do something with sublist
pass或者使用迭代器
iterator = iter(L)
sublist = L.next() # <-- yields the first sublist在这两种情况下,都可以通过以下方式访问sublist元素
sublist[2]iterator = iter(sublist)
iterator.next() # <-- yields first elem of sublist
for elem in sublist:
# do something with my elem
passhttps://stackoverflow.com/questions/17238781
复制相似问题