You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何从元组列表直接提取去重IP地址无需手动遍历

Python提取元组列表中去重IP的实现方法

不需要手动编写遍历迭代的逻辑,直接用Python内置的语法特性一行代码就能实现需求。

基础实现(无序去重)

如果不需要保留IP的出现顺序,用集合自动去重的特性即可,执行效率最高:

ip_addrs_with_ports = [('192.168.1.1', '1234'),('192.168.1.1', '1235'),('192.168.1.3', '1236')]
ip_addr = list(set(next(zip(*ip_addrs_with_ports))))

保序实现(保留首次出现顺序)

如果需要和原列表中IP第一次出现的顺序保持一致(Python普通集合是无序的),可以用字典去重的方案,兼容所有Python3版本,运行结果和你给出的预期完全一致:

ip_addr = list(dict.fromkeys(next(zip(*ip_addrs_with_ports))))

运行后得到的结果固定为['192.168.1.1', '192.168.1.3']。

原理说明

  • *ip_addrs_with_ports 是Python的序列解包语法,会把列表中的每个元组拆成独立参数传给zip()函数
  • zip()会自动把所有传入元组同位置的元素聚合到一起,用next()取第一个迭代结果,就能拿到所有IP地址组成的元组,不需要额外写循环遍历列表
  • 集合set本身自带去重特性,传入重复元素会自动过滤;dict.fromkeys会以传入序列的元素为键生成字典,自动过滤重复键的同时保留元素第一次出现的顺序,最后把结果转成list即可。

内容的提问来源于stack exchange,提问作者user1993412

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 12:21:30