gpt4 book ai didi

python - 基于索引的python列表中的优雅切片

转载 作者:行者123 更新时间:2023-11-28 21:35:42 25 4
gpt4 key购买 nike

我想知道根据索引对 python 列表进行切片的高效优雅方法是什么。为了提供一个最小的例子:

temp = ['a','b','c','d']

index_needed=[0,2]

如何在没有循环的情况下对列表进行切片?

预期输出

output_list =['a','c']

我觉得会有办法,但还没有想出任何办法。有什么建议吗?

最佳答案

首先,请注意 Python 中的索引从 0 开始。因此您需要的索引将是 [0, 2]

然后您可以使用列表理解:

temp = ['a', 'b', 'c', 'd']
idx = [0, 2]

res = [temp[i] for i in idx] # ['a', 'c']

使用内置函数,您可能会发现 map 性能更好:

res = map(temp.__getitem__, idx)        # ['a', 'c']

由于您使用的是 Python 2.7,因此返回一个列表。对于 Python 3.x,您需要将 map 对象传递给 list


如果您希望完全避免 Python 级循环,您可能希望使用第 3 方库,例如 NumPy:

import numpy as np

temp = np.array(['a', 'b', 'c', 'd'])
res = temp[idx]

# array(['a', 'c'],
# dtype='<U1')

res2 = np.delete(temp, idx)

# array(['b', 'd'],
# dtype='<U1')

这会返回一个 NumPy 数组,然后您可以通过 res.tolist() 将其转换为列表。

关于python - 基于索引的python列表中的优雅切片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51988142/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com