我如何使用对象列表中的单独元素?
所以,我有一个巨大的对象列表,其中包含:难度等级,数学表达式,结果。我试图构建一个游戏,并希望打印表达式并检查结果,但我不知道如何打印单独的元素。 我的列表是什么样子的: 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
给出的列表expressoes
,你可以使用map
或列表理解所包含的类实例的属性:
list_of_nivels = map(lambda x: x.nivel, expressoes)
在Python 3.x中,你将需要调用list
上map
返回一个列表
并配有理解:
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]
这解决了我的问题!但是我的列表返回如下所示:('3','82 \ r \ n')我理解\ n换行符而不是\ r。 –
@AlexandrePrecrecal这是一个回车。有些系统通常将EOL字符指定为''\ r \ n' –
请[edit]展示一个[mcve] –
你有没有尝试过任何东西?发布你的代码示例,我们会尽力帮助你。如果没有这部分内容,SO社区无法弄清楚你想完成什么。你的代码,你需要帮助.. – repzero
@MosesKoledoye我得到这个错误: TypeError:'Expressao'对象不支持索引 –