Skip to main content
 首页 » 编程设计

python之访问列表的某些元素

2025年05月04日16txw1958

无法弄清楚如何以一种漂亮的方式做到这一点:

我有一个包含 n 个元素的列表, 我想访问列表的每个 m 元素。

例如:[1, 2, 3, 4, 5] 和 m = 2 会给出 [2, 4]

我可以简单地用一个循环来完成,但是没有更“Pythonic”的方式吗?

提前致谢!

编辑:

我好像忘记了什么。 我想,不仅要获取这些值,还要修改它们。 我尝试切片 a[::2] = 3,但它不起作用。 . .

我正在寻找类似的东西

请您参考如下方法:

切片语法为你做这件事:

>>> my_list = range(10) 
>>> my_list 
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 
>>> my_list[::2] 
[0, 2, 4, 6, 8] 
>>> my_list[1::2] 
[1, 3, 5, 7, 9] 

这是一种包装列表以获得您想要的原始赋值行为的方法,但我不确定我是否会推荐它:

class AssignableSlice(list): 
    def __setitem__(self, i, v): 
        if isinstance(i, slice): 
            for ii in xrange(*i.indices(len(self))): 
                self[ii] = v 
        else: 
            super(AssignableSlice, self).__setitem__(i, v) 
 
a = AssignableSlice(range(10)) 
print a 
a[::2] = 3 
print a 
a[1::3] = 99 
print a 

产生:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 
[3, 1, 3, 3, 3, 5, 3, 7, 3, 9] 
[3, 99, 3, 3, 99, 5, 3, 99, 3, 9]