鱼C论坛

 找回密码
 立即注册
查看: 3948|回复: 9

列表推导式的作业题

[复制链接]
发表于 2023-5-4 20:24:44 | 显示全部楼层
1. 是的,小甲鱼推荐避免使用 + 连接符拼接字符串,因为它会产生新的字符串对象,对内存和性能不友好。但在这个例子里,为了简洁和方便,我们仍然使用了 + 连接符。实际上,可以使用更高效的方式,如  ''.join()  或者使用 f-string(Python 3.6+)来实现。

2. 正确理解列表推导式:
(1) slogan[2:]  的确表示去除序号和点后的内容。在这里, slogan  是字符串,而不是列表,所以它表示的是从字符串的第3个字符(索引为2)开始,一直到字符串末尾的所有字符。
(2) slogan[0]  和  name[0]  是字符串slogan和name中的第一个字符,也就是序号。这里是通过字符串的索引访问特定位置的字符。
(3)是的, slogan[0] == name[0]  是为了在 list1 和 list2 之间通过序号建立一一对应的关联关系。

3. 结果按照 1-4 的顺序排列,是因为推导式的for循环按照列表的顺序进行。首先它遍历 list1,然后针对每个 list1 的元素,它遍历 list2。这样,当找到相应序号匹配的 name 和 slogan 时,它会按照 list1 的顺序来创建 list3。由于 list1 的元素是按照 1-4 的顺序排列的,所以 list3 中的元素也会按照相应的顺序排列。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-4 23:25:59 | 显示全部楼层
lzb1001 发表于 2023-5-4 23:22
list3 = [name + ':' + slogan[2:] for slogan in list1 for name in list2 if slogan[0] == name[0]]
...

使用 f-string 的形式,可以将 list3 的列表推导式修改为:

  1. list3 = [f"{name}:{slogan[2:]}" for slogan in list1 for name in list2 if slogan[0] == name[0]]
复制代码


这将使用 f-string 实现字符串的拼接,语法更简洁且性能更好。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-29 04:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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