当A小于B时列表升序,如何设置B小于A时Python代码输出降序列表
实现方案
原代码中v = list(range(A, B))定义在判断逻辑前,当A≥B时会生成空列表,所以需要在else分支重新构造降序序列,具体写法如下:
方法1:使用range负步长直接生成(推荐,性能最优)
利用range的第三个步长参数设为-1,即可生成从大到小的序列,注意range的结束位是开区间,所以要包含B的话需要将结束参数设为B-1:
else: v = list(range(A, B - 1, -1)) print(v)
方法2:升序序列反转
也可以先构造B到A的升序序列再反转,写法更直观:
else: v = list(range(B, A + 1)) v.reverse() print(v)
完整可运行代码
import random A = random.randint(1, 30) print('A =', A) B = random.randint(1, 30) print('B =', B) if A < B: # 原代码此处也存在开区间问题,若需包含B端点要改为B+1 v = list(range(A, B + 1)) print(v) else: v = list(range(A, B - 1, -1)) print(v)
补充说明:原代码中A<B分支的
range(A,B)默认是左闭右开区间,会导致输出缺失B端点,如果你的需求是输出列表要包含A和B两个端点,可以参考上述完整代码修正原if分支的参数。
内容的提问来源于stack exchange,提问作者Maxim Shevcenko
相关产品推荐
相关产品推荐

