H.C*_*hoi 24 python split list
我有一个这样的列表:
list1 = [blah, 3, haha, 2, pointer, 1, poop, fire]
Run Code Online (Sandbox Code Playgroud)
我想要的输出是:
list = [3, 2, 1, fire]
Run Code Online (Sandbox Code Playgroud)
所以我想要的是列出前一个列表的偶数元素.我尝试使用一个for语句并尝试删除第二个元素,同时将它们附加到列表中,但它没有成功:
count = 0
for a in list1:
list2.append(a)
if count % 2 = = 1:
list2.pop(count)
print list2
Run Code Online (Sandbox Code Playgroud)
有什么建议?
Die*_*len 49
您可以使用列表切片.以下代码片段可以.
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
Run Code Online (Sandbox Code Playgroud)
产量
[3, 2, 1, 'fire']
['blah', 'haha', 'pointer', 'poop']
Run Code Online (Sandbox Code Playgroud)
mil*_*cic 35
这应该可以满足您的需求 - 从偏移量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']
Run Code Online (Sandbox Code Playgroud)
请注意,在上面的示例中,第一个切片操作(a[1:])演示从所需的起始索引中选择所有元素,而第二个切片操作(a[::2])演示如何选择列表中的每个其他项目.
一个更惯用和有效的切片操作将两者合二为一,即a[::2](0可以省略)a[1::2],这避免了不必要的列表复制,应该在生产代码中使用,正如其他人在评论中指出的那样.
| 归档时间: |
|
| 查看次数: |
28272 次 |
| 最近记录: |