或者,一个更笼统的问题是,如何对数组进行切片以获取每第n行,因此对于偶数/奇数,您希望跳过一行,但通常情况下,您希望获取每n- th行,跳过n-1行。
Answers:
假设您在谈论列表,则在切片中指定步骤(并开始索引)。语法为list[start:end:step]
。
您可能知道正常列表访问权限可以获取某项,例如l[2]
获取第三项。给定两个数字和一个冒号,您可以指定要从列表中获取的范围。返回值是另一个列表。例如,l[2:5]
给您第三到第六项。您还可以传递一个可选的第三个数字,该数字指定步长。默认的步长为1,仅表示获取每个项目(在开始索引和结束索引之间)。
例:
>>> l = range(10)
>>> l[::2] # even - start at the beginning at take every second item
[0, 2, 4, 6, 8]
>>> l[1::2] # odd - start at second item and take every second item
[1, 3, 5, 7, 9]
请参阅Python教程中的列表。
如果要获取列表的n
第n个元素(即不包括第一个元素),则必须像切片l[(n-1)::n]
。
例:
>>> l = range(20)
>>> l
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
现在,获取第三个元素将是:
>>> l[2::3]
[2, 5, 8, 11, 14, 17]
如果要包括第一个元素,只需执行l[::n]
。
::
吗?还是他们都是不同于的运算符:
?如果我l[::1]
得到原始阵列,那?
l[2:5]
。该步骤是可选的。
> map(lambda index: arr[index],filter(lambda x: x%n == 0,range(len(arr))))
arr
列表在哪里,并且n
需要切片。
map()
与和filter()
一起使用lambda
。不鼓励/缓慢执行此操作,应始终使用列表理解来完成。