簡體   English   中英

當第一個參數大於第二個參數時,range()返回空列表

[英]range() returns empty list when first argument is larger than the second

我有以下幾行代碼

l1 = [1, 3, 1, 2, 10]
l2 = [2, 1, 10, 5, 5]
ranges = [] 
[ranges.append(list(range(x, y, 1))) if x < y else 
ranges.append(list(range(y, x, -1))) for x, y in zip(l1, l2)] 

我希望此代碼可以打印以下內容

[[1], [3, 2], [1, 2, 3, 4, 5, 6, 7, 8, 9], [2, 3, 4], [10, 9, 8, 7, 6]]

相反,我明白了

[[1], [], [1, 2, 3, 4, 5, 6, 7, 8, 9], [2, 3, 4], []]

我錯過了一些明顯的東西嗎

調用范圍時,這樣可以動態地設置步幅( 第三參數):

range(x, y, 1 if x < y else -1)

ranges = []     
for x, y in zip(l1, l2):
    ranges.append(list(range(x, y, 1 if x < y else -1)))

ranges
# [[1], [3, 2], [1, 2, 3, 4, 5, 6, 7, 8, 9], [2, 3, 4], [10, 9, 8, 7, 6]]

PS,我更喜歡使用循環來解決這個問題,因為我不建議使用列表推導來解決副作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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