PTT
Submit
Submit
選擇語言
正體中文
简体中文
PTT
Python
[問題] x!=y!=z!=I!=j 這樣如何簡潔寫?
作者:
pmove
(金疾檸檬)
2020-05-23 17:45:07
如果三個變數,互相都不等於。羅輯上是
x != y != z
但是這樣寫是錯的,必需寫成:
x != y and x != z and y != z
那如果要多個變數,互相都不相等,
舉個例子,例如,5個變數互不相等,
即 x != y != z != I != j
那有啥簡潔又正確的寫法嗎?
我是問Python 3, 謝謝。
作者:
cuteSquirrel
(松鼠)
2020-05-23 17:57:00
https://onlinegdb.com/SkbFX_Ls8
作者:
Yshuan
(倚絃)
2020-05-23 18:04:00
推 取set很棒
作者:
pmove
(金疾檸檬)
2020-05-23 18:10:00
C大好方法,也就是 5 == len(set(x,y,z,I,j))但是如果 x,y,z,I,j 是class, 那就無法用set, 這時有無好方法?
作者:
TitanEric
(泰坦)
2020-05-23 18:12:00
感覺用all也可以class有override equal跟hash就可以
作者:
outshaker
(out)
2020-05-23 18:20:00
class可以用id 或 hash 來判斷阿
作者:
pmove
(金疾檸檬)
2020-05-23 18:49:00
例如變數是list的情況,x=[2,1,1], y=[1,2,1], z=[2,1,1],I=[1,1,2], j=[2,2,1]. 這種情況set((x,y,z,I,j))會有錯,有何好方法?轉成tuple是一種方法Ok, 感謝以上各位大大的回答
作者:
vi000246
(Vi)
2020-05-23 19:52:00
如果是複雜情況就override equal再用for loop判斷吧
作者:
outshaker
(out)
2020-05-23 19:54:00
複雜變數要檢查互不相等,就寫迴圈檢查阿
作者:
zerof
(貓橘毛發呆雕像)
2020-05-23 20:30:00
operator.ne
作者:
ddavid
(謊言接線生)
2020-05-23 20:30:00
如果該class可以被sort的話,單純的兩兩比較是O(n^2),先sort後只比較相鄰元素是O(nlogn + n) = O(nlogn)會好一點另外上面提到hash也是一種方式,就是看看要花多少額外空間
作者:
pmove
(金疾檸檬)
2020-05-23 22:03:00
回z大, operator.ne只能傳入兩個arguments的樣子,沒法多個
作者:
alvinlin
(林矜業)
2020-05-24 03:25:00
我感覺原來的最簡潔好懂。不知道為何要緣木求魚。x != yand x != z and y != z不是挺好的
作者:
oToToT
(å±å©)
2020-05-24 14:46:00
他應該試想處裡有很多變數的情況吧,例如1000個之類的
作者:
zerof
(貓橘毛發呆雕像)
2020-05-24 17:32:00
....你可以用 list comprehension +zipzip 會漏, itertools.combinations 才對
作者:
alan23273850
2020-05-24 18:28:00
這種問題 stackoverflow 上面應該很多ㄅ
作者:
pmove
(金疾檸檬)
2020-05-24 20:42:00
回z大, combinations我知,不過很多變數的情況,個人覺得c大的set法,速度會比較快
作者:
s860134
(s860134)
2020-05-30 18:02:00
直覺 hash table 查數量確實會快一點
繼續閱讀
[問題] 新手問題,不知錯在哪
kslman
[閒聊] dataframe 用def修改
loser113
[問題] 剛接觸python遇到練習題想不出解法,挫折
s9209122222
[問題] PySide2 使用滑鼠旋轉圖片
janice001
Re: [問題] datetime模組能抓民國年嗎?
ides13
[問題] 檔案輸出(寫檔)
yoz4ni
[問題] 開發環境是否會影響程式編譯?
cliff3237
[閒聊] 網咖跑訓練?
ssdoz2sk
[問題] selenium 新手 高鐵訂票
edward0329
[問題] 處理文件檔案txt->excel
unknown
Links
booklink
Contact Us: admin [ a t ] ucptt.com