python 中数字列表的反转数字

Reverse digits of a list of numbers in python

for i in range(len(primo)):
    reversed_num = 0
    while i > 0:
       digit = i % 10
       reversed_num = reversed_num * 10 + digit
       i //= 10
       reversed.append (reversed_num)
    
for r in range(len(reversed)):
    print (r)

我正在编写一个程序来反转列表中的一系列数字。例如:

输入:1234,124,654

输出:4321,421,456

该脚本对一个数字可以正常工作,但对一个列表就不能正常工作。

好吧,您只是打印长度范围,所以我根本不知道这将如何打印您的数字。我相信这里有一个简短的方法可以满足您的需求。

In [1]: [int(str(x)[::-1]) for x in [1234, 124, 654]]
Out[1]: [4321, 421, 456]

或:

def reverse_items(l: list[int]) -> list[int]:
    return [int(str(x)[::-1]) for x in l]


if __name__ == "__main__":
    print(reverse_items([4321, 421, 456]))

输出:

[1234, 124, 654]

这将创建一个整数值列表,该列表是通过反转给定列表项的字符串值生成的。

不错的尝试,但是反转数字的函数怎么样?你应该很高兴知道 reversed 已经存在于 Python 中,你可以这样使用它:

>>> list(reversed(str(0.1223142131)))
['1', '3', '1', '2', '4', '1', '3', '2', '2', '1', '.', '0']
>>> float(''.join(reversed(str(0.1223142131))))
1312413221.0

所以你可以实现自己的功能:

def myReverser(n: float) -> float:
    return float(''.join(reversed(str(n))))

然后在整个list:

上使用它
reversedList = [myReverser(i) for i in [1234, 124, 654]]

如果你不想要所有数字末尾的.0,这意味着你不想要浮点数,而是integers,所以你可以这样做这个:

reversedList = [int(i) for i in reversedList]

您可以使用 built-in reverse()reversed() 方法反转 Python 中的列表。这些方法将反转列表而不创建新列表。 Python reverse()reversed() 将反转原始列表对象中的元素。

代码:

l = input().split(',')
l = list(map(lambda x: list(map(lambda d: int(d), x))[::-1], l))
print(l)

输入:

123,456,789

输出:

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

A string-free 基于数字的旧多项式表示的方法。通过递归长除法计算商和余数,并将它们作为一对记录在列表中。一旦达到破坏条件,就以 10 的递减幂移动列表。

def digit_reverser(n):
    
    def base_10_representation(n):
        d = []
        q, r = divmod(n, 10) # quotient, remainder
        d.append((q, r)) 
        if q < 10:
            return d
        d.extend(base_10_representation(q))
        return d

    # reversing the digits    
    d = base_10_representation(n)
    n_digits = len(d)
    return sum(r*10**(n_digits-i) for i, (_, r) in enumerate(d)) + d[-1][0]

n = 123456789
d = digit_reverser(n)

print(d)

输出

987654321

对于号码列表的扩展:

nrs = [1234, 124, 654]
nrs_rev = [digit_reverser(n) for n in nrs]

输出

[4321, 421, 456]