Python列表:按索引连接列表

时间:2013-10-24 18:01:53

标签: python

我想在Python 3.3中按索引将列表加入到字符串中。我可以为彼此跟随的项目执行此操作,但我想仅通过索引访问它。

这有效:

list = ['A', 'B', 'C', 'D']
partList = "".join(list[1:3])
-> BC

但我怎样才能做到这一点(它不起作用):

list = ['A', 'B', 'C', 'D']
partList = "".join(list[0,3])
-> AD

2 个答案:

答案 0 :(得分:7)

您无法使用slice notation将列表切片为任意块。对于一般情况,最好的选择可能是使用索引列表来构建列表理解。

mylist = ['A', 'B', 'C', 'D'] # the full list
indices = [0, 3] # the indices of myList that you want to extract

# Now build and join a new list comprehension using only those indices.
partList = "".join([e for i, e in enumerate(mylist) if i in indices])
print(partList) # >>> AD

正如 DSM 的评论中指出的那样,如果您关注效率,并且您知道您的指数列表将是“友好的”(也就是说,它也没有任何指数对于你正在削减的列表来说很大,你可以使用一个没有enumerate的简单表达式:

partList = "".join([mylist[i] for i in indices])

答案 1 :(得分:1)

您打算执行的不是切片而是选择。

我能想到的最接近的可能性是使用operator.itemgetter

>>> from operator import itemgetter
>>> mylist = ['A', 'B', 'C', 'D']
>>> ''.join(itemgetter(0,3)(mylist))
'AD'

如果您需要使用变量,请使用splat运算符

index = (0,3)
''.join(itemgetter(*index)(mylist))