我想知道是否有可能在python 3的列表理解中獲得範圍的長度,以便設置一個條件語句? 此代碼不起作用在Python中獲取範圍的長度List Comprehension
b = [x**2 for x in range(10) if x % 2 == 0 and x > len/2]
我想知道是否有可能在python 3的列表理解中獲得範圍的長度,以便設置一個條件語句? 此代碼不起作用在Python中獲取範圍的長度List Comprehension
b = [x**2 for x in range(10) if x % 2 == 0 and x > len/2]
>>> n = 10
>>> b = [x**2 for x in range(n) if x % 2 == 0 and x > n/2]
>>> b
[36, 64]
我瞭解以上所有評論,並欣賞但是,@ GBR24已經回答了我的需求,我希望利用這個邏輯來創建比我提供的列表更復雜的列表,再次感謝您的回覆 - Erik –
您可以將我的答案標記爲已接受:)。 ..當x'2 == 0且x> len(list(range(10))時,'b = [x ** 2代表x在範圍內(10)),肯定有更復雜的方法來執行您想要的操作。/2]',但是KISS的原則勝出。 – blacksite
如果你把長度條件的'if'自帶的'for'(這意味着如果條件不滿足後,該項目被跳過),你可能應該縮短'範圍'。如果你做了'range(5)'(並省略了長度檢查),你會得到你想要的結果。事實上,你可以執行'range(0,5,2)'並跳過檢查的x%2 == 0'部分。 – Blckknght
確定'x'是否大於一半長度,或者您是否只需要'range'的後半部分,是真正的測試嗎?也就是說,你想要什麼'range(10,20)';每個值都大於長度的一半,所以你想保留所有的值('x> len(therange)/ 2')還是要保留後半部分? – ShadowRanger
@Blckknght:同意(儘管等效代碼將基於'範圍(6,10,2)',而不是'range(5)'或'range(0,5,2)'。 ''範圍'蓋帽,通過'n'的上限計算出'n // 2 + 1&〜1'的起點(如果需要,可以舍入到最後) – ShadowRanger