当前位置:  开发笔记 > 编程语言 > 正文

使用python list comprehensions从列表中删除项目

如何解决《使用pythonlistcomprehensions从列表中删除项目》经验,为你挑选了1个好方法。

我有一个整数列表,如下所示:

unculledlist = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29]

我想剔除这个列表中的值,所以它看起来像这样:

culledlist = [0, 2, 4, 10, 12, 14, 20, 22, 24]

但我想通过使用列表推导来做到这一点.

这是我试图剔除列表值的图形预览.如果我将列表值排列成行和列,则更容易理解.但这只是视觉上的.我不需要嵌套列表: 在此输入图像描述

我可以通过使用两个嵌套循环来完成它:

unculledlist = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29]

index = 0
culledlist = []
for i in range(6):
    for j in range(5):
        if (i % 2 == 0) and (j % 2 == 0):
            culledlist.append(unculledlist[index])
        index += 1

print "culledlist: ", culledlist  # culledlist = [0, 2, 4, 10, 12, 14, 20, 22, 24]

但我想用python列表理解来代替它.

有人可以提供一个例子吗?

谢谢.

编辑:

我想使用列表推导的原因是因为我的实际unculledlist有几百万个整数.使用列表推导解决这个问题将最终加快速度.我不在乎可读性.我只是想做一个更快的解决方案.

我不能使用numpy或scipy模块.但我可以使用itertools模块.不确定使用itertools的解决方案是否比具有列表推导的解决方案更快?甚至lambda



1> PyNEwbie..:

我看到了这一点,并认为字符串操作将是更容易的方法

culled_list = [item for item in unculledlist if str(item)[-1] in ['0','2','4']]

结果仍然是整数列表

>>> culled_list
[0, 2, 4, 10, 12, 14, 20, 22, 24]

感谢eugene y采用不那么复杂的方法

>>> culled_list = [item for item in unculledlist if item % 10 in (0,2,4)]
>>> culled_list
[0, 2, 4, 10, 12, 14, 20, 22, 24]

推荐阅读
落单鸟人
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有