我有一个如下所示的列表:
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
我想生成一个过滤后的列表,如下所示:
filtered_lst = [2, 6, 7, 9, 10, 13]
Python 是否提供自定义切片的约定。比如:
lst[1, 5, 6, 8, 9, 12] # slice a list by index
最佳答案
from operator import itemgetter
itemgetter(1, 5, 6, 8, 9, 12)(lst)
演示:
>>> from operator import itemgetter
>>> lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
>>> itemgetter(1, 5, 6, 8, 9, 12)(lst)
(2, 6, 7, 9, 10, 13)
这将返回一个元组;如果需要,则使用 list(itemgetter(...)(lst))
转换为列表。
请注意,这等同于带有一组索引而不是范围的切片表达式 (lst[start:stop]
);它不能用作左侧切片赋值 (lst[start:stop] = some_iterable
)。
关于python - python中的复杂列表切片/索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14114621/