概述
这个代码else:
return None
如果if测试未成功,则会中断for循环,因此如果名称与列表中的第一个元组不匹配,则不会测试其他名称。你不想那样!在
而且,你不需要这样做
^{pr2}$
你能做到的tuplo[index]
这是您代码的修复版本。在tuplo = [
('joao', 300, 20),
('ana', 80, 15),
('patricia', 17, 90),
]
def coordenadas(tuplo, nome):
for indice in range(len(tuplo)):
if tuplo[indice][0] == nome:
print(tuplo[indice])
coordenadas(tuplo, 'joao')
coordenadas(tuplo, 'ana')
coordenadas(tuplo, 'patricia')
输出('joao', 300, 20)
('ana', 80, 15)
('patricia', 17, 90)
顺便说一句,如果只想找到第一个匹配的元组,可以在if块的末尾添加break或return语句,如下所示:def coordenadas(tuplo, nome):
for indice in range(len(tuplo)):
if tuplo[indice][0] == nome:
print(tuplo[indice])
break
然而,有更好的方法来完成这项任务。在Python中,最好直接迭代集合中的项,而不是通过索引间接迭代:def coordenadas(tuplo, nome):
for t in tuplo:
if t[0] == nome:
print(t)
break
一种更有效的方法是将列表转换为字典,尤其是当您有许多元组时。例如:tuplo = [
('joao', 300, 20),
('ana', 80, 15),
('patricia', 17, 90),
]
tuplo_dict = {t[0]: t for t in tuplo}
def coordenadas(data, nome):
print(nome, data.get(nome))
coordenadas(tuplo_dict, 'joao')
coordenadas(tuplo_dict, 'ana')
coordenadas(tuplo_dict, 'patricia')
coordenadas(tuplo_dict, 'tom')
输出joao ('joao', 300, 20)
ana ('ana', 80, 15)
patricia ('patricia', 17, 90)
tom None
它使用了更多的RAM,但是它比以前的版本更高效,因为在字典中搜索条目的速度非常快。在
最后
以上就是甜甜镜子为你收集整理的python元祖迭代_在python中迭代元组的全部内容,希望文章能够帮你解决python元祖迭代_在python中迭代元组所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复