我有一個列表,並希望根據關係操作輸出項目。Python - 列表中的關係運算符
a = range(10)
。 我希望做的: min(a[a>5])
- >6
如何做到這一點?
我有print min([x for x in a if x > 5])
但有沒有更好的?
a[a>5]
的輸出是1
。
這是什麼意思?
我最初認爲它是返回1
表明這個條件滿足的列表成員。但是,a[a>50]
也返回1
。
我有一個列表,並希望根據關係操作輸出項目。Python - 列表中的關係運算符
a = range(10)
。 我希望做的: min(a[a>5])
- >6
如何做到這一點?
我有print min([x for x in a if x > 5])
但有沒有更好的?
a[a>5]
的輸出是1
。
這是什麼意思?
我最初認爲它是返回1
表明這個條件滿足的列表成員。但是,a[a>50]
也返回1
。
如果你願意使用庫來做你想做的事,你可以使用numpy
。它允許那種indexing。示例 -
In [2]: import numpy as np
In [6]: a = [1,2,3,4,5,6,7,8,9,10,11,12]
In [8]: na = np.array(a) #There are better ways to create this numpy array, like `np.arange(1,13)`
In [9]: na[na > 5]
Out[9]: array([ 6, 7, 8, 9, 10, 11, 12])
In [10]: min(na[na > 5])
Out[10]: 6
'na = np.arange(1,13)'會節省幾行! – jonrsharpe
是的,但我只是把這個,以顯示如何將普通列表轉換爲numpy數組,雖然它的平凡:-) –
你可以使用一個生成器表達式來進行濾波,第一
>>> min(i for i in a if i > 5)
6
這樣就避免了在內存中創建一個列表,如果你已經min
評估列表理解的結果
'a [a> 5] == a [真] == a [1] == 1'。在Python 3中,你會得到'TypeError'。 –
如果您使用'numpy',否則您可以使用該語法,否則您當前的方法很好 - 您可以使用'min(filter(lambda x:x> 5,range(10)))'來獲得更多功能的方法,表達式/列表解析通常被認爲是更pythonic – jonrsharpe
@AshwiniChaudhary 我不知道我理解關係列表上的操作。 '>>> a = range(10); >>> print type(a),a> 15'給出' True' 發生了什麼? –