Python如何实现列表内各数字元素单独反转而非反转列表顺序?
列表单元素数位反转实现方案
list.reverse()的作用是原地反转列表内元素的排列顺序,不会修改元素本身的内容,因此无法实现「反转每个元素数位」的需求,可通过以下两种方案实现目标效果:
方案一:字符串转换法(代码简洁,日常场景优先用)
核心逻辑是将每个整数转为字符串后做字符串反转,再转回整数类型,通过列表推导式即可完成批量处理:
# 测试用例1 l = [12, 51, 32] l = [int(str(num)[::-1]) for num in l] print(l) # 输出: [21, 15, 23] # 测试用例2 l = [21, 35, 56] l = [int(str(num)[::-1]) for num in l] print(l) # 输出: [12, 53, 65]
注意:该方法处理末尾带0的整数(如100)时,反转后字符串为
'001',转整数会自动丢弃前导0得到结果1,如果需要固定数位长度保留前导0,需额外做补0处理。
方案二:数学运算法(无类型转换,性能更优)
通过取模、整除运算逐位拆分数字,重新拼接为反转后的整数,适合大数据量下的性能敏感场景:
def reverse_single_num(num): res = 0 while num > 0: res = res * 10 + num % 10 num = num // 10 return res l = [12, 51, 32] l = [reverse_single_num(num) for num in l] print(l) # 输出: [21, 15, 23]
- 该方法默认仅处理正整数,如果列表包含负数,可先提取符号位,对数字绝对值做反转后再乘回符号位即可
- 输出规则和字符串转换法一致,会自动省略反转后产生的前导0
内容的提问来源于stack exchange,提问作者swati chandra
相关产品推荐
相关产品推荐

