我对如何处理这个问题有点困惑。
我有大量的列表,并希望删除列表的内容不是以特定的数字开始。
例如。假设我希望在以下列表中只保留至少有一个节点以4开头的列表:
['4-7', '2-5', '2-9', '2-32', '2-16', '2-29', '2-13', '2-26', '2-20', '2-23']
['2-32', '2-31', '2-36', '2-28', '2-34', '2-43', '2-41', '2-39']在本例中,我应该删除第二个列表,并保留第一个列表。我知道如何检测哪些列表以4开头,并且我可以找出具有该特性的列表,但不确定如何标记其他列表以进行删除。
最好的方法是什么?我有很多这样的列表(几百万),所以我正在尝试找到最便宜的方法来做到这一点。我正在考虑创建一个列表来保存列表,然后将其与原始列表进行比较,并删除不在两个列表中的列表,但我正在努力避免过多的嵌套for循环。
发布于 2011-10-27 05:07:17
您可以尝试列表理解:
result = [yourlist for yourlist in yourlists
if any(node.startswith('4-') for node in yourlist)]或者生成器表达式,如果你不想一次在内存中得到所有的结果:
result = (yourlist for yourlist in yourlists
if any(node.startswith('4-') for node in yourlist))在线查看它的工作方式:ideone
https://stackoverflow.com/questions/7908902
复制相似问题