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

歡迎訪問 生活随笔!

生活随笔

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

python

python 如何快速判断列表是否相同_Python-检查列表中的所有元素是否相同

發布時間:2025/3/8 python 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 如何快速判断列表是否相同_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 結果,對于Python 2.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

2020-02-17

總結

以上是生活随笔為你收集整理的python 如何快速判断列表是否相同_Python-检查列表中的所有元素是否相同的全部內容,希望文章能夠幫你解決所遇到的問題。

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