[英]is there some kind of expression evaluation within list/tuple slicing syntax within Python?
使用numpy數組,您可以在方括號切片語法中使用某種不等式:
>>>arr = numpy.array([1,2,3])
>>>arr[arr>=2]
array([2, 3])
常規python數據結構中是否存在某種等價語法? 我嘗試時遇到錯誤:
>>>lis = [1,2,3]
>>>lis[lis > 2]
2
但不是某種類型的異常,我得到的返回值為2,這沒有多大意義。
ps我根本找不到這個語法的文檔,所以如果有人能指出我的numpy和常規python(如果它存在)那將是偉大的。
在Python 2.x中, lis > 2
返回True
。 這是因為操作數具有不同的類型,並且沒有為這兩種類型定義比較運算符,因此它按字母順序比較類名( "list" > "int"
)。 由於True
與1
相同,因此您將獲得索引1處的項目。
在Python 3.x中,這個表達式會給你一個錯誤(一個不那么令人驚訝的結果)。
TypeError: unorderable types: list() > int()
要做你想做的事,你應該使用列表理解:
[x for x in lis if x > 2]
使用列表理解:
[a for a in lis if a>=2]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.