2016-07-28 71 views
0

所以,我有一个巨大的对象列表,其中包含:难度等级,数学表达式,结果。我试图构建一个游戏,并希望打印表达式并检查结果,但我不知道如何打印单独的元素。 我的列表是什么样子的: 3,s,520 + 370,890 我想只打印表达式: 类似于:print(list,key = lambda x:x.nivel) 但是只有一个元素该名单E一个对象(在这种情况下NIVEL)的我如何使用对象列表中的单独元素?

代码:

class Expressao(object): 

    def __init__(self, nivel, tipo, expressao, resposta): 
     self.nivel = nivel 
     self.tipo = tipo 
     self.expressao = expressao 
     self.resposta = resposta 

    def __repr__(self): 
     return self.nivel + ", " + self.tipo + ", " + self.expressao + ", " + self.resposta` 

class FonteDeExpressoes(object): 
    import csv 
    def lista (self): 
     expressoes = [] 
     with open('exp.txt') as f: 
      for line in f: 
       row = line.split('\t') 
       exp = Expressao(row[0], row[1], row[2], row[3]) 
       expressoes.append(exp) 
     #print expressoes 
     return expressoes 
+1

请[edit]展示一个[mcve] –

+0

你有没有尝试过任何东西?发布你的代码示例,我们会尽力帮助你。如果没有这部分内容,SO社区无法弄清楚你想完成什么。你的代码,你需要帮助.. – repzero

+0

@MosesKoledoye我得到这个错误: TypeError:'Expressao'对象不支持索引 –

回答

0

给出的列表expressoes,你可以使用map列表理解所包含的类实例的属性:

list_of_nivels = map(lambda x: x.nivel, expressoes) 

在Python 3.x中,你将需要调用listmap返回一个列表

并配有理解:

list_of_nivels = [expressao.nivel for expressao in expressoes] 

要返回多个属性从列表中的每个实例可以使用operator.attrgetter

import operator 

nivels_and_resposta = [operator.attrgetter('nivel', 'resposta')(x) for x in expressoes] 
+0

这解决了我的问题!但是我的列表返回如下所示:('3','82 \ r \ n')我理解\ n换行符而不是\ r。 –

+0

@AlexandrePrecrecal这是一个回车。有些系统通常将EOL字符指定为''\ r \ n' –

相关问题