我应该先检查并做出相应的计划,还是应该检查每个数据?

时间:2017-05-25 04:56:51

标签: python python-2.7

因此。我正在为作业编写代码。我有一大堆数据(包含性别,职业和体重),并且(大致)被分类为学生/非学生和男性/女性。

我被要求过滤数据(已经使用带参数的函数),所以我可以得到:

  • 每个重量的列表
  • 每个学生体重的列表
  • 每个男性学生体重的列表
  • 每个女性学生体重的列表
  • 每个非学生体重的列表

但是我想到了一个疑问:我应该遍历大列表中的每个元素并检查每个元素,还是应该为每个限制创建一段代码?哪一个是最有效/ pythonic的事情?

数据安排在

等子列表中
['E', '23', 'M', 'AC', 96.5, 0.69, '130.28']

其中,按顺序,它告诉学生/非学生,年龄,性别,进食前/后,体重,体重测量的预期误差和测量时间。

现在我首先进行迭代,然后使用以下代码进行检查。

def datafilter(fil=False,est=None,sex=None):
    Data=[]
    if not fil:
        for q in dreal():
            for w in q:
                Data.append(w[4])
        return Data
    if fil:
        for q in dreal():
            for w in q:
                if est is True and w[0]=='E':
                    if sex is None:
                        Data.append(w[4])
                    if w[2]==sex:
                        Data.append(w[4])
                if est is False and w[0]!='E':
                    Data.append(w[4])
        return Data

1 个答案:

答案 0 :(得分:0)

您应该定义过滤器功能:

def datafilter(fil=False, est=None, sex=None):
    if not fil:
        filter = lambda w: True
    elif est:
        if sex:
            filter = lambda w: w[0] == 'E' and w[2] == sex
        else:
            filter = lambda w: w[0] == 'E'
    else:
        filter = lambda w: w[0] != 'E' 
    return [w[4] for q in dreal() for w in q if filter(w)]