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
,这意味着你不想要浮点数,而是int
egers,所以你可以这样做这个:
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]
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
,这意味着你不想要浮点数,而是int
egers,所以你可以这样做这个:
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]