簡體   English   中英

Python中的list / tuple切片語法中是否有某種表達式求值?

[英]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" )。 由於True1相同,因此您將獲得索引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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM