Python list中去重的多种方法

2023-05-16

去重之后顺序会改变

set去重 (列表去重会让列表改变原来的顺序)

l1 = [1,4,4,2,3,4,5,6,1]
l2 = list(set(l1))
print(l2)    # [1, 2, 3, 4, 5, 6]

但是,可以通过列表中索引(index)的方法保证去重后的顺序不变。

l1 = [1,4,4,2,3,4,5,6,1]
l2 = list(set(l1))
l2.sort(key=l1.index)
print(l2)      # [1, 4, 2, 3, 5, 6]
itertools.groupby

itertools.groupby

import itertools
l1 = [1,4,4,2,3,4,5,6,1]
l1.sort()
l = []
it = itertools.groupby(l1)
for k,g in it:
    l.append(k)
print(l)      # [1, 2, 3, 4, 5, 6]

fromkeys

l1 = [1,4,4,2,3,4,5,6,1]
t = list({}.fromkeys(l1).keys())
# 解决顺序问题
t.sort(key=l1.index)
print(t)         # [1, 4, 2, 3, 5, 6]

通过删除索引

l1 = [1,4,4,2,3,4,5,6,1]
t = l1[:]
for i in l1:
    while t.count(i) >1:
          del t[t.index(i)]
# 解决顺序问题
t.sort(key=l1.index)
print(t)    # [1, 4, 2, 3, 5, 6]

去重不改变顺序

建立新列表[]

l1 = [1,4,4,2,3,4,5,6,1]
new_l1 = []
for i in l1:
    if i not in new_l1:
        new_l1.append(i)
print(new_l1)    # [1, 4, 2, 3, 5, 6]

reduce方法

from functools import reduce
l1 = [1,4,4,2,3,4,5,6,1]
func = lambda x,y:x if y in x else x + [y]
print(reduce(func,[[],]+l1))   # [1, 4, 2, 3, 5, 6]

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python list中去重的多种方法 的相关文章

  • Google App Engine queue.yaml 无法在开发服务器中工作

    我无法让 dev appserver py 识别我使用queue yaml 创建的自定义队列 他们没有出现在http localhost 8000 taskqueue http localhost 8000 taskqueue 当我尝试向其
  • scipy 将一个稀疏矩阵的所有行附加到另一个稀疏矩阵

    我有一个 numpy 矩阵 想在其中附加另一个矩阵 这两个矩阵的形状为 m1 shape 2777 5902 m2 shape 695 5902 我想将 m2 附加到 m1 以便新矩阵的形状为 m new shape 3472 5902 当
  • 使用 pygame 显示 unicode 符号

    我检查了其他答案 但不明白为什么我的代码错误地显示 This is what I currently see https i stack imgur com 8tNIK png 这是关于文本渲染的相关代码 font pygame font
  • 如何以“正确”的方式处理带有空字节的 Python unicode 字符串?

    Question PyWin32 似乎很乐意将 null 终止的 unicode 字符串作为返回值 我想以 正确 的方式处理这些字符串 假设我得到一个像这样的字符串 u C Users Guest MyFile asy x00 x00sy
  • Python - 来自 .进口

    我第一次尝试图书馆 我注意到解决图书馆内导入问题的最简单方法是使用如下结构 from import x from some module import y 我觉得这件事有些 糟糕 也许只是因为我不记得经常看到它 尽管公平地说我还没有深入研究
  • 如何在Python中同时运行两只乌龟?

    我试图让两只乌龟一起移动 而不是一只接着另一只移动 例如 a turtle Turtle b turtle Turtle a forward 100 b forward 100 但这只能让他们一前一后地移动 有没有办法让它们同时移动 有没有
  • 搜索多个字段

    我想我没有正确理解 django haystack 我有一个包含多个字段的数据模型 我希望搜索其中两个字段 class UserProfile models Model user models ForeignKey User unique
  • 如何在 Python 中加密并在 Java 中解密?

    我正在尝试在 Python 程序中加密一些数据并将其保存 然后在 Java 程序中解密该数据 在Python中 我像这样加密它 from Crypto Cipher import AES KEY 1234567890123456789012
  • Keras:如何保存模型或权重?

    如果这个问题看起来很简单 我很抱歉 但是阅读 Keras 保存和恢复帮助页面 https www tensorflow org beta tutorials keras save and restore models https www t
  • Emacs 24.x 上的 IPython 支持

    我对 IPython 与 Emacs 的集成感到困惑 从 Emacs 24 开始 Emacs 附带了自己的python el 该文件是否支持 IPython 还是仅支持 Python 另外 维基百科 http emacswiki org e
  • 结构差异 sudo() run('sudo 命令')

    我想知道函数之间有什么区别sudo 和函数run sudo u user smth 文档上有 sudo 在所有运行方式上都是相同的 除了它总是换行 调用 sudo 程序中的给定命令以提供超级用户 特权 但有几次 sudo cmd 提示我输入
  • Gspread如何复制sheet

    在 Stackoverflow 上进行谷歌搜索和搜索后 我想我找不到有关如何复制现有工作表 现有模板工作表 并将其保存到另一个工作表中的指南 根据文档 有重复表 https gspread readthedocs io en latest
  • Django send_mail SMTPSenderRefused 530 与 gmail

    一段时间以来 我一直在尝试使用 Django 从我正在开发的网站接收电子邮件 现在 我还没有部署它 并且我正在使用Django开发服务器 我不知道这是否会影响它 这是我的 settings py 配置 EMAIL BACKEND djang
  • SMTP_SSL SSLError: [SSL: UNKNOWN_PROTOCOL] 未知协议 (_ssl.c:590)

    此问题与 smtplib 的 SMTP SSL 连接有关 当与 SMTP 无 ssl 连接时 它正在工作 在 SMTP SSL 中尝试相同的主机和端口时 出现错误 该错误仅基于主机 gmail 设置也工作正常 请检查下面的示例 如果 Out
  • Matplotlib 中 x 轴标签的频率和旋转

    我在下面编写了一个简单的脚本来使用 matplotlib 生成图形 我想将 x tick 频率从每月增加到每周并轮换标签 我不知道从哪里开始 x 轴频率 我的旋转线产生错误 TypeError set xticks got an unexp
  • Python SSL X509:KEY_VALUES_MISMATCH

    Python HTTPS server from http server import HTTPServer SimpleHTTPRequestHandler import ssl https stackoverflow com a 408
  • Django 与谷歌图表

    我试图让谷歌图表显示在我的页面上 但我不知道如何将值从 django 视图传递到 javascript 以便我可以绘制图表 姜戈代码 array Year Sales Expenses 2004 1000 400 2005 1170 460
  • 如何根据第一列创建新列,同时考虑Python Pandas中字母和列表的大小? [复制]

    这个问题在这里已经有答案了 我在 Python Pandas 中有 DataFrame 如下所示 col1 John Simon prd agc Ann White BeN and Ann bad list Ben Wayne 我需要这样做
  • TKinter 中的禁用/启用按钮

    我正在尝试制作一个像开关一样的按钮 所以如果我单击禁用按钮 它将禁用 按钮 有效 如果我再次按下它 它将再次启用它 我尝试了 if else 之类的东西 但没有成功 这是一个例子 from tkinter import fenster Tk
  • Apache Beam Pipeline 写表后查询表

    我有一个 Apache Beam Dataflow 管道 它将结果写入 BigQuery 表 然后我想查询该表以获取管道的单独部分 但是 我似乎无法弄清楚如何正确设置此管道依赖性 我编写的新表 然后想要查询 与一个单独的表连接以进行某些过滤

随机推荐

  • 为什么需要使用栈结构?

    在以往学习高级语言时 xff0c 提到栈 xff0c 下意识都会反映上来FILO xff0c 它是暂存数据的一种数据结构 xff0c 但是为什么会用到栈 xff1f 却一直讳莫如深 xff0c 这是高级语言不会涉及到的底层的实现 xff0c
  • C语言中define的用法

    define顾名思义 xff0c 就是下定义 xff0c 那么在C中它也发挥着下定义的作用 1 提前定义变量 include lt stdio h gt define N 100 int main int a 61 10 printf 34
  • C++编译时出现未定义的引用问题解决

    未定义的引用 xff08 undefined reference xff09 出现的原因是生成可执行文件所在的cpp包含头文件时 xff0c 头文件中声明的函数定义未被可执行文件所识别 xff0c 解决办法如下 xff1a add libr
  • 【仿真】手把手学会基于Simulink下的模糊控制系统(上)

    目录 前言 xff1a 什么是模糊控制 1 模糊控制器MATLAB教程 xff08 初级 xff09 1 1 模糊PD控制器 前言 xff1a 什么是模糊控制 控制专业并且写过论文的同学想必一定听说过模糊控制 xff0c 但多数人对于什么是
  • 【STM32CubeMX】STM32H7-RTOS-SPI-W5500

    工程源码下载 xff1a 基于裸机和Freertos的W5500网络通信工程 目录 1 移植W5500步骤 2 Cobemx配置步骤 2 1 时钟配置Clock Configuration 2 2 Trace and Debug配置 2 3
  • 【PADS】PADS覆铜技巧

    目录 重要快捷键 基础设置 层设置 电源层分割处理 给自己喜欢的网络上个颜色 TOP层覆铜 验证设计是否有问题 PADS开窗 PADS为分割层模拟数字地覆网格铜 PADS 快捷键 Ctrl 43 鼠标滚轮失灵 Ctrl 43 鼠标滚轮造成P
  • 【Cadence16.6】安装教程

    初识安装包文件 我们cadence16 6的安装包是这样的 xff0c 详细请去https www fanyedu com index mulitcourse video html id 61 1008 1008观看 首先我们打开这个文件夹
  • 【硬件】芯片温度/功耗计算

    本博客参考 xff1a 一纸沙漏的博客 芯片的四个温度 内核温度 封装表面温度 空气周边温度以及PCB板温度 TJ xff08 Die Junction Temp xff09 芯片的硅核温度 xff0c 就是芯片内部核心的温度 xff0c
  • Python unicode 字符串 转 list

    unicode 字符串 转 list unicodeList 61 u 39 100 100 100 100 100 100 39 1 方法一 list 61 eval unicodeList 2 方法二 int value for val
  • 【硬件】AD623单电源供电差分放大

    1 前言 检测电机电流运用检流电阻的方法在往期已经介绍过 详情请见 xff1a 检流电阻计算电流 2 需求分析 2 1 电机流过电流 已知电机的峰值堵转电流为4 6A xff0c 连续堵转电流为3 2A xff0c 以上信息可以得知需要采样
  • 【电路】PT1000/PT100温度采集电路

    目录 原理图下载链接 xff1a https download csdn net download Roger 717 33823983https download csdn net download Roger 717 33823983h
  • 【QT】手把手制作一个QT网络调试助手(准备阶段)

    目录 1 新建一个工程 2 mainwindow ui设计 2 1 对窗口主体进行栅格化布局 2 2 添加网络通信配置GroupBox 2 2 1 填充内容 2 2 2 栅格布局GroupBox 2 3 总结 3 Pro程序配置 4 头文件
  • 【PR】PR视频剪辑实用技巧

    1 两个视频叠加 1 首先 xff0c 找到要导入的视频所在文件夹 xff0c 将视频拖动到项目面板中 按住Ctrl拖动视频再复制两个视频 2 将素材视频分别拖入到序列的 视频轨道1 2 3 3 点击选中轨道1上的视频 xff0c 在源面板
  • 【Project】项目管理软件学习笔记

    一 前言 使用Project制定项目计划步骤大致如下 xff1a 以Project2013为例 xff0c 按照上图步骤指定项目计划 二 实施 2 1 创建空白项目 点击文件 新建 空白项目 xff0c 即完成了空白项目的创建 xff0c
  • 【硬件】P沟道和N沟道MOS管开关电路设计

    场效应管做的开关电路一般分为两种 xff0c 一种是N沟道 xff0c 另一种是P沟道 xff0c 如果电路设计中要应用到高端驱动 的话 xff0c 可以采用PMOS来导通 P沟道MOS管开关电路 PMOS的特性 xff0c Vgs小于一定
  • 多线程基础之七:多线程遇上printf的“延迟写”策略

    0 运行库提供的IO读写函数采用 延迟写 策略的原因 编程时经常会用到printf 函数 xff0c 但是由于printf 函数涉及到和显示器或磁盘等外设进行交互 xff0c 所以操作涉及到从 用户态 gt 内核态 gt 返回用户态 的一系
  • VC和VS区别

    S是Visual Studio xff0c 它是微软提供的一个工具集 xff0c 由各种各样的工具组成 VS可以支持C C 43 43 VB JAVA C 编程 然了一次只能支持一种编程方式 在VS安装完成 xff0c 第一次运行的时候会让
  • 【potplayer安装及设置LAV Splitter】

    potplayer安装及设置LAV Splitter 下载及安装Lav Splitter解码器配置Lav Splitter解码器 potplayer是一款windows平台上一款轻量功能强大的播放器 xff0c 它界面简洁 xff0c 功能
  • 关于头文件的相互包含

    编程过程中 xff0c 经常会碰到头文件的相互包含 xff0c 如果处理不慎 xff0c 就会报错 比如在头文件A h中有如下代码 xff08 代码中的B Handle是在头文件B h中定义的 xff09 xff1a span class
  • Python list中去重的多种方法

    去重之后顺序会改变 set去重 列表去重会让列表改变原来的顺序 l1 61 1 4 4 2 3 4 5 6 1 l2 61 list set l1 print l2 1 2 3 4 5 6 但是 xff0c 可以通过列表中索引 xff08