鱼C论坛

 找回密码
 立即注册
查看: 192|回复: 4

intersection会自动把列表转成集合吗?

[复制链接]
发表于 前天 00:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
intersection会自动把列表转成集合吗?
截屏2025-06-02 23.59.57.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 前天 00:02 | 显示全部楼层
在Python中,集合的 intersection() 方法在计算时会自动将传入的列表(或其他可迭代对象)转换为临时集合,但不会改变原始列表的类型。返回的结果始终是一个新集合。

示例说明:
[code=python]
set_a = {1, 2, 3}
list_b = [3, 4, 5]

# 自动将列表转为临时集合计算交集
result = set_a.intersection(list_b)  

print(result)       # 输出: {3} (集合类型)
print(type(result)) # 输出: <class 'set'>
[/code]

关键点:
  • 原始列表 list_b 仍然是列表类型,不会被修改
  • 转换只发生在计算过程中,返回的是新集合
  • 如果列表有重复元素(如 [3,3,4]),转换时会自动去重


等效于手动转换:
[code=python]
# 与显式转换效果相同
result = set_a & set(list_b)
[/code]

注意:若需高频执行交集操作,建议预先将列表转为集合以提升效率。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 前天 08:38 | 显示全部楼层
intersection是set类的一个方法,不能自动转化,只能用在set对象身上
  1. >>> {1, 2, 3}.intersection({2, 3, 4})
  2. {2, 3}

  3. >>> set.intersection({1, 2, 3}, {2, 3, 4})
  4. {2, 3}
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 前天 19:01 | 显示全部楼层
intersection 是 集合 (set) 的方法,因此必须先把「调用者」变成集合,例如

  1. set(l1).intersection(...)
复制代码

至于 后面的实参,Python 只要求它们是“可迭代对象”即可——可以是列表、元组、range 甚至生成器。

方法内部会把这些实参临时转换成集合(或逐项遍历并用集合逻辑来判断),再做交集计算,但并不会修改原来的列表。

所以:

  1. l1 = [1, 2, 3, 4]
  2. l2 = [2, 3]
  3. l3 = [3, 4]

  4. # OK:调用者是 set,后面的 l2、l3 直接传列表
  5. common = set(l1).intersection(l2, l3)   # 结果 {3}
复制代码

如果直接写 l1.intersection(...) 会报错,因为列表本身没有这个方法。

如果用 & 运算符,参与运算的两边都必须先显式转成 set:

  1. set(l1) & set(l2) & set(l3)
复制代码

记住,调用者必须是集合。

其余参数只要可迭代,Python 会在内部按需“暂时”转换为集合,因此看起来就像“自动”帮你转了一样。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 前天 22:18 | 显示全部楼层
很多代码就是这样,你很难知道 也无需知道代码的底层逻辑
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-5 21:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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