Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 用偶数和奇数索引将列表一分为二?_Python_List_Split - Fatal编程技术网

Python 用偶数和奇数索引将列表一分为二?

Python 用偶数和奇数索引将列表一分为二?,python,list,split,Python,List,Split,可能重复: 我有这样一份清单: list1 = [blah, 3, haha, 2, pointer, 1, poop, fire] 我想要的输出是: list = [3, 2, 1, fire] 所以我想做一个列表,包含前一个列表中的偶数元素。我尝试使用for语句,并尝试在将第2个元素添加到列表时删除它们,但没有成功: count = 0 for a in list1: list2.append(a) if count % 2 = = 1: list2.pop(count) p

可能重复:

我有这样一份清单:

list1 = [blah, 3, haha, 2, pointer, 1, poop, fire]
我想要的输出是:

list = [3, 2, 1, fire]
所以我想做一个列表,包含前一个列表中的偶数元素。我尝试使用
for
语句,并尝试在将第2个元素添加到列表时删除它们,但没有成功:

count = 0
for a in list1:
 list2.append(a)
 if count % 2 = = 1:
  list2.pop(count)

print list2

有什么建议吗?

这会给你你所需要的-从偏移量0或1开始定期采样列表:

>>> a = ['blah', 3,'haha', 2, 'pointer', 1, 'poop', 'fire']
>>> a[0:][::2] # even
['blah', 'haha', 'pointer', 'poop']
>>> a[1:][::2] # odd
[3, 2, 1, 'fire']
请注意,在上面的示例中,第一个切片操作(
a[1://code>)演示了从所需的开始索引中选择所有元素,而第二个切片操作(
a[::2]
)演示了如何选择列表中的其他每一项


一种更为惯用和高效的切片操作将这两种操作结合在一起,即
A[::2]
0
可以省略)和
A[1::2]
,这避免了不必要的列表副本,应该在生产代码中使用,正如其他人在注释中指出的那样。

您可以使用列表切片。下面的代码片段就可以了

list1 = ['blah', 3, 'haha', 2, 'pointer', 1, 'poop', 'fire']
listOdd = list1[1::2] # Elements from list1 starting from 1 iterating by 2
listEven = list1[::2] # Elements from list1 starting from 0 iterating by 2
print listOdd
print listEven
输出

[3, 2, 1, 'fire']
['blah', 'haha', 'pointer', 'poop']

您只需对列表进行切片即可: 对于奇数:
a[1::2]

甚至:
a[::2]

非常感谢:)我不知道这种事情存在!真的吗helped@H.Choi:每个教程都很早就介绍了这一点,包括。如果你不读的话,你会错过很多很酷的东西。为什么
[0::[::2]
[1:[::2]
而不是
[::2]
[1::2]
?这将不必要地复制列表。-1使用此语法。这是不必要的,也是非意识形态的。用惯用的Python切片
[::2]
表示偶数,用
[1::2]
表示奇数。我认为下面的答案更容易理解。将两个概念结合在一个答案中让我感到困惑。这个问题(及其答案)比标记为重复的问题更好、更一般。第三个问题的这个答案是最好的: