gpt4 book ai didi

循环/列表理解的python基础

转载 作者:行者123 更新时间:2023-11-28 22:41:01 25 4
gpt4 key购买 nike

假设我有:

list=[('mike', 22.0), ('john', 33.0)]

我想打印一个只有数字的列表,从小到大。我试过这样做:

for s in list:
print(sorted(s[1]))

但是它说'int object is not iterable'?

如果我这样做,它会起作用(输出是:[22,33])

print (sorted(s[1] for s in list))

第二次尝试是如何工作的,第一次尝试和第二次尝试有什么区别?很难理解列表理解技术。

顺便说一句,最终目标是打印出最低分的人的姓名。但是在将名称与标记相关联之前,我试图先了解这一部分。不过,Dict 会使分配键值变得容易得多

最佳答案

当你这样做时:

for s in list:
print(sorted(s[1]))

您正在尝试对 int 进行排序。 sorted 函数需要一个iterable(例如,一个列表)。因此你的错误。这是值得注意的,因为:

for s in list:
print(s[1])

打印:

22.0
33.0

另一方面,当您执行以下操作时:Sorted(s[1] for s in myList),您正在对列表进行排序(实际上您正在对生成器进行排序,但有点细线)。尝试:

newList = [s[1] for s in myList]
newList

您会发现实际上是在对列表进行排序。对列表进行排序是有意义的,但对单个数字进行排序则没有意义。 Sorted 是一个返回排序列表的函数。为了说明生成器和可迭代对象(如列表、元组和字典)之间的区别,请将最后一个片段与下面的片段进行比较:

newGenerator = (s[1] for s in myList)
print(newGenerator) #probably won't give what you ever need
for item in newGenerator:
print item #this will iterate through the items in the generator and print them

我以为您希望对组进行排序,但其他人已经回答了这个问题并被否决了,所以我没有添加它。以下是您将如何做到这一点:

myList.sort(key = lambda x: x[1])

然后:

myList[0][0]

将是最低人的名字。

在这种情况下,sort 是一种方法,它对 myList 进行操作并对其进行更改。如果您将 key = lambda x: x[1] 参数传递给它,它将根据位置 1 对列表进行排序。所以,如果你的数字在你的元组中处于不同的位置,你会在那里使用不同的数字。 lambda 只是一种动态创建函数的方法,在这种情况下,该函数只是获取 1 元素(第二个元素)。

关于循环/列表理解的python基础,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33049051/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com