Rumah pembangunan bahagian belakang Tutorial Python Bagaimana untuk melaksanakan deduplikasi senarai menggunakan Python?

Bagaimana untuk melaksanakan deduplikasi senarai menggunakan Python?

May 10, 2023 am 08:25 AM
python

Jalan

## 1. 新建列表,如果新列表中不存在,则添加到新列表。 def unique(data):     new_list = []     for item in data:         if item not in new_list:             new_list.append(item)     return new_list   # test data = ['a', 'a', 1, 1, 2, 2, 'b', 'b', 2, 1] start_time = time.time() print("new_list + not in data:", unique(data)) print("time:" + str((time.time() - start_time) * 1000) + " ms")  # result $ python -V Python 2.7.16 $ python unique.py  ('for list + not in. data:', ['a', 1, 2, 'b']) time:0.0441074371338 ms  ## 2. 新建列表。根据下标判断是否存在新列表中,如果新列表中不存在则添加到新列表。 def unique(data):     new_list = []     for i in range(len(data)):         if data[i] not in new_list:             new_list.append(data[i])     return new_list   ## 2.1 新建列表,使用列表推导来去重。是前一种的简写。 def unique(data):     new_list = []     [new_list.append(i) for i in data if not i in new_list]     return new_list  # test data = ['a', 'a', 1, 1, 2, 2, 'b', 'b', 2, 1] start_time = time.time() print("for range + not in. data:", unique(data)) print("time:" + str((time.time() - start_time) * 1000) + " ms")  ## 3. 通过index找不到该项,则追加到新列表中。index找不到会报错,因此放在异常处理里。 def unique(data):     new_list = []     for i in range(len(data)):         item = data[i]         try:             if (new_list.index(item)  0):         l -= 1         i = l         while i > 0:             i -= 1             if data[i] == data[l]:                 del data[l]                 break     return data  # test data = ['a', 'a', 1, 1, 2, 2, 'b', 'b', 2, 1] start_time = time.time() print("one list while. last -> first result. data:", unique(data)) print("time:" + str((time.time() - start_time) * 1000) + " ms")  ## 6. 在原有列表上移除重复项目。自前往后遍历,逐个与后面项比较,如果值相同且下标相同,则移除当前项。 def unique(data):     l = len(data)     i = 0     while i  last result. data:", unique(data)) print("time:" + str((time.time() - start_time) * 1000) + " ms")  ## 7. 新建列表。遍历列表,利用index比较出现的位置,如果出现在第一次的位置则追加到新数组。 def unique(data):     new_list = []     for i in range(len(data)):         if i == data.index(data[i]):             new_list.append(data[i])     return new_list   # test data = ['a', 'a', 1, 1, 2, 2, 'b', 'b', 2, 1] start_time = time.time() print("for range + index. data:", unique(data)) print("time:" + str((time.time() - start_time) * 1000) + " ms")  ## 8. 利用字典属性唯一性来实现去重复。 def unique(data):     obj = {}     for item in data:         obj[item] = item     return obj.values()   # test data = ['a', 'a', 1, 1, 2, 2, 'b', 'b', 2, 1] start_time = time.time() print("list + dict:", unique(data)) print("time:" + str((time.time() - start_time) * 1000) + " ms")  ## 或者直接通过dict.fromkeys来实现 print("dict fromkeys:", dict.fromkeys(data).keys())  ## 9. 利用filter函数,即把不符合条件的过滤掉。这里filter不支持下标,因此需要借助外部列表存储不重复项 def uniq(item):     i = data.index(item)     if (item not in new_list):         new_list.append(item)         return True     return False def unique(item):     if obj.get(item) == None:         obj[item] = item         return True     return False   # test data = ['a', 'a', 1, 1, 2, 2, 'b', 'b', 2, 1] start_time = time.time() new_list = [] print('filter + list + not in: ', filter(uniq, data)) print("time:" + str((time.time() - start_time) * 1000) + " ms")  ## 10. 利用字典结合过滤来实现去重复。 def unique(item):     if obj.get(item) == None:         obj[item] = item         return True     return False   # test data = ['a', 'a', 1, 1, 2, 2, 'b', 'b', 2, 1] start_time = time.time() obj = {} print("filter + dict + get:", filter(unique, data)) print("time:" + str((time.time() - start_time) * 1000) + " ms")  ## 11. 利用map来实现去重复。与map与filter类似,是一个高阶函数。可以针对其中项逐个修改操作。 ## 与filter不同map会保留原有项目,并不会删除,因此值可以改为None,然后再过滤掉。 def unique(item):     if item not in new_list:         new_list.append(item)         return item     return None   # test data = ['a', 'a', 1, 1, 2, 2, 'b', 'b', 2, 1] new_list = [] start_time = time.time()  print("list from Map:", filter(lambda item: item != None, map(unique, data))) print("time:" + str((time.time() - start_time) * 1000) + " ms")  ## 12. 利用set数据结构里key的唯一性来去重复 data = ['a', 'a', 1, 1, 2, 2, 'b', 'b', 2, 1] print("from Set:", list(set(data))) print("time:" + str((time.time() - start_time) * 1000) + " ms")  ## 13. 提前排序,从后向前遍历,将当前项与前一项对比,如果重复则移除当前项 def unique(data):     data.sort()     l = len(data)     while (l > 0):         l -= 1         if (data[l] == data[l - 1]):             data.remove(data[l])     return data   # test data = ['a', 'a', 1, 1, 2, 2, 'b', 'b', 2, 1] start_time = time.time() print("sort + remove:", unique(data)) print("time:" + str((time.time() - start_time) * 1000) + " ms")  ## 14. 提前排序,自前往后遍历,将当前项与后一项对比,如果重复则移除当前项 def unique(data):     """      in python 3: TypeError: ' 1):         l -= 1         if (data[last] == data[l - 1]):             is_repeat = True             break      if (is_repeat):         del data[last]      return recursion_unique(data, len - 1)   # test data = ['a', 'a', 1, 1, 2, 2, 'b', 'b', 2, 1] start_time = time.time() print("recursion_unique:", recursion_unique(data, len(data))) print("time:" + str((time.time() - start_time) * 1000) + " ms")  ## 17. 利用递归调用来去重复的另外一种方式。递归自后往前逐个调用,当长度为1时终止。 ## 与上一个递归不同,这里将不重复的项目作为结果拼接起来 def recursion_unique_new(data, len):     if (len  1):         l -= 1         if (data[last] == data[l - 1]):             is_repeat = True             break      if (is_repeat):         del data[last:]         result = []     else:         result = [data[last]]      return recursion_unique_new(data, len - 1) + result   # test data = ['a', 'a', 1, 1, 2, 2, 'b', 'b', 2, 1] start_time = time.time() print("recursion_unique_new:", recursion_unique_new(data, len(data))) print("time:" + str((time.time() - start_time) * 1000) + " ms")  ## 18. 利用numpy lib库. 需提前安装 `pip install numpy` import numpy as np   def unique(data):     res = np.array(data)     return list(np.unique(res))   # test data = ['a', 'a', 1, 1, 2, 2, 'b', 'b', 2, 1] start_time = time.time() print("import numpy as np.unique:", unique(data)) print("time:" + str((time.time() - start_time) * 1000) + " ms")
Salin selepas log masuk
Bagaimana untuk melaksanakan deduplikasi senarai menggunakan Python?

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan deduplikasi senarai menggunakan Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Boleh kod vs dijalankan di Windows 8 Boleh kod vs dijalankan di Windows 8 Apr 15, 2025 pm 07:24 PM

Kod VS boleh dijalankan pada Windows 8, tetapi pengalaman mungkin tidak hebat. Mula -mula pastikan sistem telah dikemas kini ke patch terkini, kemudian muat turun pakej pemasangan kod VS yang sepadan dengan seni bina sistem dan pasangnya seperti yang diminta. Selepas pemasangan, sedar bahawa beberapa sambungan mungkin tidak sesuai dengan Windows 8 dan perlu mencari sambungan alternatif atau menggunakan sistem Windows yang lebih baru dalam mesin maya. Pasang sambungan yang diperlukan untuk memeriksa sama ada ia berfungsi dengan betul. Walaupun kod VS boleh dilaksanakan pada Windows 8, disyorkan untuk menaik taraf ke sistem Windows yang lebih baru untuk pengalaman dan keselamatan pembangunan yang lebih baik.

Memilih antara php dan python: panduan Memilih antara php dan python: panduan Apr 18, 2025 am 12:24 AM

PHP sesuai untuk pembangunan web dan prototaip pesat, dan Python sesuai untuk sains data dan pembelajaran mesin. 1.Php digunakan untuk pembangunan web dinamik, dengan sintaks mudah dan sesuai untuk pembangunan pesat. 2. Python mempunyai sintaks ringkas, sesuai untuk pelbagai bidang, dan mempunyai ekosistem perpustakaan yang kuat.

PHP dan Python: Paradigma yang berbeza dijelaskan PHP dan Python: Paradigma yang berbeza dijelaskan Apr 18, 2025 am 12:26 AM

PHP terutamanya pengaturcaraan prosedur, tetapi juga menyokong pengaturcaraan berorientasikan objek (OOP); Python menyokong pelbagai paradigma, termasuk pengaturcaraan OOP, fungsional dan prosedur. PHP sesuai untuk pembangunan web, dan Python sesuai untuk pelbagai aplikasi seperti analisis data dan pembelajaran mesin.

Adakah sambungan vscode berniat jahat? Adakah sambungan vscode berniat jahat? Apr 15, 2025 pm 07:57 PM

Sambungan kod VS menimbulkan risiko yang berniat jahat, seperti menyembunyikan kod jahat, mengeksploitasi kelemahan, dan melancap sebagai sambungan yang sah. Kaedah untuk mengenal pasti sambungan yang berniat jahat termasuk: memeriksa penerbit, membaca komen, memeriksa kod, dan memasang dengan berhati -hati. Langkah -langkah keselamatan juga termasuk: kesedaran keselamatan, tabiat yang baik, kemas kini tetap dan perisian antivirus.

Cara menjalankan program di terminal vscode Cara menjalankan program di terminal vscode Apr 15, 2025 pm 06:42 PM

Dalam kod VS, anda boleh menjalankan program di terminal melalui langkah -langkah berikut: Sediakan kod dan buka terminal bersepadu untuk memastikan bahawa direktori kod selaras dengan direktori kerja terminal. Pilih arahan Run mengikut bahasa pengaturcaraan (seperti python python your_file_name.py) untuk memeriksa sama ada ia berjalan dengan jayanya dan menyelesaikan kesilapan. Gunakan debugger untuk meningkatkan kecekapan debug.

Bolehkah kod studio visual digunakan dalam python Bolehkah kod studio visual digunakan dalam python Apr 15, 2025 pm 08:18 PM

Kod VS boleh digunakan untuk menulis Python dan menyediakan banyak ciri yang menjadikannya alat yang ideal untuk membangunkan aplikasi python. Ia membolehkan pengguna untuk: memasang sambungan python untuk mendapatkan fungsi seperti penyempurnaan kod, penonjolan sintaks, dan debugging. Gunakan debugger untuk mengesan kod langkah demi langkah, cari dan selesaikan kesilapan. Mengintegrasikan Git untuk Kawalan Versi. Gunakan alat pemformatan kod untuk mengekalkan konsistensi kod. Gunakan alat linting untuk melihat masalah yang berpotensi lebih awal.

Boleh vscode digunakan untuk mac Boleh vscode digunakan untuk mac Apr 15, 2025 pm 07:36 PM

VS Kod boleh didapati di Mac. Ia mempunyai sambungan yang kuat, integrasi git, terminal dan debugger, dan juga menawarkan banyak pilihan persediaan. Walau bagaimanapun, untuk projek yang sangat besar atau pembangunan yang sangat profesional, kod VS mungkin mempunyai prestasi atau batasan fungsi.

Boleh vscode menjalankan ipynb Boleh vscode menjalankan ipynb Apr 15, 2025 pm 07:30 PM

Kunci untuk menjalankan buku nota Jupyter dalam kod VS adalah untuk memastikan bahawa persekitaran Python dikonfigurasi dengan betul, memahami bahawa perintah pelaksanaan kod adalah konsisten dengan susunan sel, dan mengetahui fail besar atau perpustakaan luaran yang boleh menjejaskan prestasi. Fungsi penyempurnaan dan debug yang disediakan oleh kod VS dapat meningkatkan kecekapan pengekodan dan mengurangkan kesilapan.

See all articles