当第一个参数大于秒时,范围函数表现不正常

Pej*_*ylo 4 python range

我有以下几行代码

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)] 
Run Code Online (Sandbox Code Playgroud)

我希望此代码可以打印以下内容

[[1], [3, 2], [1, 2, 3, 4, 5, 6, 7, 8, 9], [2, 3, 4], [10, 9, 8, 7, 6]]
Run Code Online (Sandbox Code Playgroud)

相反,我明白了

[[1], [], [1, 2, 3, 4, 5, 6, 7, 8, 9], [2, 3, 4], []]
Run Code Online (Sandbox Code Playgroud)

我错过了一些明显的东西吗

cs9*_*s95 6

  1. 我不建议将列表推导用于副作用.
  2. 您需要更改的是__CODE__取决于哪些值更大的符号.

range(x, y, 1 if x < y else -1)
Run Code Online (Sandbox Code Playgroud)