日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python比较列表所有项是否有相同的部分_检查列表中的所有元素是否相同

發布時間:2023/12/15 python 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python比较列表所有项是否有相同的部分_检查列表中的所有元素是否相同 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一般方法:

def checkEqual1(iterator):

iterator = iter(iterator)

try:

first = next(iterator)

except StopIteration:

return True

return all(first == rest for rest in iterator)

單線:

def checkEqual2(iterator):

return len(set(iterator)) <= 1

還有一條線:

def checkEqual3(lst):

return lst[1:] == lst[:-1]

這三個版本的不同之處在于:

在……里面checkEqual2內容必須是可理解的。

checkEqual1和checkEqual2可以使用任何迭代器,但是checkEqual3必須接受序列輸入,通常是具體的容器,如列表或元組。

checkEqual1一旦發現差異就會停止。

自checkEqual1包含更多的Python代碼,當許多項在開始時相等時,效率就會降低。

自checkEqual2和checkEqual3始終執行O(N)復制操作,如果大多數輸入返回false,則它們將花費更長的時間。

為checkEqual2和checkEqual3很難適應比較a == b到a is b.

timeit結果,對于Python2.7和(只有S1、S4、S7、S9應該返回True)

s1 = [1] * 5000

s2 = [1] * 4999 + [2]

s3 = [2] + [1]*4999

s4 = [set([9])] * 5000

s5 = [set([9])] * 4999 + [set([10])]

s6 = [set([10])] + [set([9])] * 4999

s7 = [1,1]

s8 = [1,2]

s9 = []

我們得到

| checkEqual1 | checkEqual2 | checkEqual3? | checkEqualIvo | checkEqual6502 |

|-----|-------------|-------------|--------------|---------------|----------------|

| s1? | 1.19? ?msec | 348? ? usec | 183? ? ?usec | 51.6? ? usec? | 121? ? ?usec? ?|

| s2? | 1.17? ?msec | 376? ? usec | 185? ? ?usec | 50.9? ? usec? | 118? ? ?usec? ?|

| s3? | 4.17? ?usec | 348? ? usec | 120? ? ?usec | 264? ? ?usec? | 61.3? ? usec? ?|

|? ? ?|? ? ? ? ? ? ?|? ? ? ? ? ? ?|? ? ? ? ? ? ? |? ? ? ? ? ? ? ?|? ? ? ? ? ? ? ? |

| s4? | 1.73? ?msec |? ? ? ? ? ? ?| 182? ? ?usec | 50.5? ? usec? | 121? ? ?usec? ?|

| s5? | 1.71? ?msec |? ? ? ? ? ? ?| 181? ? ?usec | 50.6? ? usec? | 125? ? ?usec? ?|

| s6? | 4.29? ?usec |? ? ? ? ? ? ?| 122? ? ?usec | 423? ? ?usec? | 61.1? ? usec? ?|

|? ? ?|? ? ? ? ? ? ?|? ? ? ? ? ? ?|? ? ? ? ? ? ? |? ? ? ? ? ? ? ?|? ? ? ? ? ? ? ? |

| s7? | 3.1? ? usec | 1.4? ? usec | 1.24? ? usec | 0.932? ?usec? | 1.92? ? usec? ?|

| s8? | 4.07? ?usec | 1.54? ?usec | 1.28? ? usec | 0.997? ?usec? | 1.79? ? usec? ?|

| s9? | 5.91? ?usec | 1.25? ?usec | 0.749? ?usec | 0.407? ?usec? | 0.386? ?usec? ?|

注:

# http://stackoverflow.com/q/3844948/

def checkEqualIvo(lst):

return not lst or lst.count(lst[0]) == len(lst)

# http://stackoverflow.com/q/3844931/

def checkEqual6502(lst):

return not lst or [lst[0]]*len(lst) == lst

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的python比较列表所有项是否有相同的部分_检查列表中的所有元素是否相同的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。