僅供參考,我是新來的這塞入功能能過濾intergers
所以原來的問題是
7)寫一個函數filter_range(V,羅喜),其採用整數列表v和返回一個新的列表,只包含
這些元素在v範圍內[lo,hi]。
所以我遇到了這個問題,如果用戶輸入整數和範圍條件,它將如何單獨檢查該列表中的所有項目,還是必須對每個輸入項進行測試。這是一個if語句嗎?如果是這樣會如何工作? 「如果< = STR(等等等等)< B,則打印的東西?但是,這將如何打印每個個體數通?老實說,剛剛失去了在一般情況下,洛爾
僅供參考,我是新來的這塞入功能能過濾intergers
所以原來的問題是
7)寫一個函數filter_range(V,羅喜),其採用整數列表v和返回一個新的列表,只包含
這些元素在v範圍內[lo,hi]。
所以我遇到了這個問題,如果用戶輸入整數和範圍條件,它將如何單獨檢查該列表中的所有項目,還是必須對每個輸入項進行測試。這是一個if語句嗎?如果是這樣會如何工作? 「如果< = STR(等等等等)< B,則打印的東西?但是,這將如何打印每個個體數通?老實說,剛剛失去了在一般情況下,洛爾
您可以在一個單一的線使用爲此列表內涵這樣
def filter_range(v, lo, hi):
return [item for item in v if lo <= item < hi]
print filter_range(range(10), 2, 8)
輸出
[2, 3, 4, 5, 6, 7]
我相信記號[lo,high]表示lo是要包括,但嗨不是。 – mgilson
@mgilson Yup。這就是範圍的工作原理。更新:)謝謝 – thefourtheye
我喜歡這些很酷的解決方案,即使他把它給老師,她也會知道他受騙了:) – aIKid
def filter_range(v, lo, hi):
return list(filter(lambda x: lo<=x<hi, v))
或
def filter_range(v, lo, hi):
acceptable = set(range(lo, hi))
return list(filter(acceptable.__contains__, v))
OR
def filter_range(v, lo, hi):
answer = []
for i in v:
if lo <= i < hi:
answer.append(i)
return answer
OR
def filter_range(v, lo, hi):
answer = []
for i in v:
if i >= lo:
if i < hi:
answer.append(i)
return answer
我相信'[lo,high]'表示'lo'被包括在內,但是「嗨」不是。 – mgilson
@mgilson:很好!固定。感謝您的錯誤報告 – inspectorG4dget
但是,用戶如何輸入hi和lo,我試圖在if語句之前插入一個輸入問題,但一直說意想不到的塊 – user2994734
在Python3這是相當有效的(實際上並沒有創建一個列表,然後掃描)使用。
def filter_range(v, lo, hi):
return [i for i in v if i in range(lo, hi)]
在Python2你應該使用的xrange
代替range
顯然功課(只是說)。你爲什麼不試試__something__併發布它。我們很樂意從那裏引導你 – inspectorG4dget
這樣想 - 如果我給你一副紙牌,並要求你給我所有的數字從5到9,你會怎麼做?你可能會看看每張卡片,決定它是否適合該範圍,並將其移動到一個新堆。當你看完所有的牌後,你會把新的牌給我 - 現在試着用代碼來做到這一點。 – mgilson
從來沒有說過這不是:) – user2994734