Python如何将1-30范围内的奇数输出为[1,3,5,7...]格式的完整列表
问题原因
- 循环内重复覆盖
mylist变量,没有将所有奇数汇总到同一个列表 - 将数字转为字符串类型,不符合最终列表的元素类型要求
- 打印语句放在循环内部,导致每匹配到一个奇数就单独打印一次
修复方案
方案1:基于原有逻辑修改
在循环外初始化空列表,匹配到奇数时追加到列表,循环结束后统一打印:
# 先初始化空列表存储结果 mylist = [] myrange = list(range(1,30)) for i in myrange: if i % 2 != 0: # 往列表追加元素,不要覆盖原列表 mylist.append(i) # 循环结束后再打印完整列表 print(mylist)
方案2:使用列表推导式简化代码
mylist = [i for i in range(1, 30) if i % 2 != 0] print(mylist)
方案3:直接利用range步长参数生成奇数序列(逻辑最优)
range默认步长为1,设置步长为2即可直接生成间隔为2的奇数序列:
mylist = list(range(1, 30, 2)) print(mylist)
三种方案运行后都会输出你需要的结果:[1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29]
内容的提问来源于stack exchange,提问作者luin11
相关产品推荐
相关产品推荐

