Python 根据单个列表的总和从列表中删除列表

Python 根据单个列表的总和从列表中删除列表,python,list,Python,List,我想从列表中删除,列表取决于列表的总和。例如: from __future__ import print_function, division import random class Population: def __init__(self): self.population = [] def random(self): for x in range(0,21): individual=random.sample(r

我想从列表中删除,列表取决于列表的总和。例如:

from __future__ import print_function, division
import random


class Population:
    def __init__(self):
        self.population = []

    def random(self):
        for x in range(0,21):
            individual=random.sample(range(100),6)
            self.population.append(individual)
            print(self.population)

    def selection(self):        
        for individual in self.population:
            if sum(individual)<250:
                self.population.remove(individual)
                print(self.population)
from\uuuuu future\uuuuu导入打印功能,分区
随机输入
阶级人口:
定义初始化(自):
self.population=[]
def随机(自):
对于范围(0,21)内的x:
个体=随机样本(范围(100),6)
self.population.append(个人)
印刷品(自我人口)
def选择(自):
对于自我群体中的个体:

如果sum(individual)您不应该对正在迭代的列表进行变异,可以复制,也可以使用reversed。如果在迭代过程中更改列表的大小,将导致缺少元素:

    for individual in reversed(self.population):
        if sum(individual) < 250:
            self.population.remove(individual)
对于反向(自我群体)中的个体:
如果总和(单个)<250:
自我。人口。移除(个人)
复制:

for individual in self.population[:]: # copy [:]
            if sum(individual) < 250:
                self.population.remove(individual)
针对自我中的个人。总体[:]:#复制[:]
如果总和(单个)<250:
自我。人口。移除(个人)

另外
range(0,21)
创建21个列表而不是20个,您希望
range(20)

从以下位置重新编写函数:

def selection(self):        
    for individual in self.population:
        if sum(individual)<250:
            self.population.remove(individual)
            print(self.population)

谢谢成功了。此外,如何使用“复制”?我试着复制(self.population),但它似乎不喜欢。我需要导入副本吗?再次感谢@brighteyesburning007,不用担心,复制在第二个示例中。反向可能更有效though@Padrian
列表
没有
副本
:p@JonClements,确实如此;)只是不在python2中,只是看到了导入。@Padrian不在Py 2.x中。。。我看的是未来的导入及其注释OP使用的是2.x版本:我想你的意思是
sum(item)
;)谢谢你们的帮助。稍后我可能会带着更多的问题回来@brighteyesburning007稍后可以单独提问。。。同时,如果你觉得他们帮助了你,不要忘记
def selection(self):
    self.population[:] = [item for item in self.population if sum(item) >= 250]
    for item in self.population:
        print item