找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 2027|回复: 2

[求助] 请高手解答,感激不尽

2

主题

2

帖子

2

积分

贫民

积分
2
千寻 发表于 2021-7-22 17:09:00 | 显示全部楼层 |阅读模式
bookinfo = [('不一样的卡梅拉(全套)',22.50,120),('零基础学Android',65.10,89.80),
        ('摆渡人',23.40,36.00),('福尔摩斯探案全集8册',22.50,128)]
print('爬取到的商品信息:\n',bookinfo,'\n')
bookinfo.sort(key=lambda x:(x[1],x[1]/x[2]))    # 按指定规则进行排序
print('排序后的商品信息:\n',bookinfo)

问题一:lambda定义临时函数,不是只有一个返回值么?
这是两个呀
第二:程序并没有给出X的引用和定义,怎么就知道是bookinfo

回复

使用道具 举报

0

主题

22

帖子

22

积分

贫民

积分
22
lazycat79 发表于 2021-7-23 09:51:55 | 显示全部楼层
问题一:
两个值是用圆括号括起来了呀,用圆括号括起来是一个元组。
问题二:
bookinfo.sort(key=lambda x:(x[1],x[1]/x[2]))
这里是bookinfo,的sort,是bookinfo的对象,所以把bookinfo列表的每个对象带进去,而每个对象是一个圆组,这样就可以用x[1]取了。
回复 支持 反对

使用道具 举报

0

主题

102

帖子

102

积分

侠客

积分
102
傻眼貓咪 发表于 2021-8-3 22:09:31 | 显示全部楼层
本帖最后由 傻眼貓咪 于 2021-8-3 22:18 编辑

  1. # 問題(1) 解答
  2. # lambda 的構造是由 arguments(參數) 和 expression(表達式) 組成
  3. # lambda arguments(參數): expression(表達式)
  4. # 你的括號這裡是expression(表達式)
  5. # 比如:func = lambda x, y, z: (x, y, z),這裡的(x, y, z)就是expression(表達式)

  6. # 問題(2) 解答
  7. # 你問說為什麼它就知道是bookinfo?
  8. # 你的代碼寫著 bookinfo.sort(key=......... 前面就是bookinfo啊

  9. # sort() 有多種用法:
  10. # 1) book.sort()
  11. # 2) book.sort(key=......)
  12. # 3) book.sort(reverse=......)
  13. # 4) book.sort(key=......, reverse=......)

  14. # 溫馨提醒:你的代碼沒有問題,但是基本想表達的無效哦,因為你的代碼:

  15. # bookinfo.sort(key=lambda x:(x[1],x[1]/x[2])) 和 bookinfo.sort() 一樣

  16. # -------------------------------------------------------------------------------------

  17. # 以下是我的代碼,可以參考看看

  18. book = [
  19.     ('C', 7, 'a'),
  20.     ('D', 1, 'd'),
  21.     ('A', 3, 'b'),
  22.     ('B', 5, 'c')
  23. ]

  24. # 索引分類如下:
  25. if __name__ == '__main__':
  26.     # [('A', 3, 'b'), ('B', 5, 'c'), ('C', 7, 'a'), ('D', 1, 'd')]
  27.     book.sort() # 按名稱分類(也就是默認索引0)
  28.     print(book)

  29.     # [('D', 1, 'd'), ('A', 3, 'b'), ('B', 5, 'c'), ('C', 7, 'a')]
  30.     book.sort(key=lambda x: x[1]) # 按索引1分類
  31.     print(book)

  32.     # [('C', 7, 'a'), ('A', 3, 'b'), ('B', 5, 'c'), ('D', 1, 'd')]
  33.     book.sort(key=lambda x: x[2]) # 按索引2分類
  34.     print(book)
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表