繁体   English   中英

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

Output: 4321,421,456

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

编辑: ......................................

这是整个工作代码。

#program to find the multiple of the first number that summed to its reverse creates a number divisible for the second number chosen. Results are shown up to five digits.

import sys

def main():
    x = 0
    y = 0
    k = 0
    z = 0
    print ("Hello! Let's compare some numbers!\nPress input to continue")
    input()
    print ("Insert the first number")
    x = input()
    print ("Insert the second number")
    y = input()
    print()
    
    primo = []
    secondo = []
    
    #list multiples
    
    while k < 99999:
        k = int(k) + int(x)
        print (k)
        primo.append (k)
        
    while z < 99999:
        z = int(z) + int(y)
        print(z)
        secondo.append (z)
        
    print("The numbers have been calculated! Press to proceed")

    input()
    
    print("LOADING...")

    #reverse all numbers of the first list
    
    def myReverser(n: float) -> float:
       return float(''.join(list(reversed(str(n)))))
    
    reversedList = [myReverser(i) for i in primo]
    reversedList = [int(i) for i in reversedList]
    
    #sum the multiple of the first number and its reversed and search common values in res and secondo
    
    res = [
    x
    for x, y in zip(primo, reversedList)
    if (x + y) in secondo
]

    print()
    print()

    if len(res) == 0:
        print ("No results found")
    else:
        print ("The numbers are: ", res)

    #ending

    print ()
    print ("Thank you for using my program!")
    print ()
    choice = input ("Would you try with another number? [Y/N] ").capitalize()

    if choice == "Y":
        main()
    if choice == "N":
        sys.exit()

main()

#no copyright intended. This code is open-source. Feel free to use it in other projects.

该脚本可以比较两个给定的数字以找到第一个数字的倍数,该数字求和到它的反向创建一个可以被选择的第二个数字整除的数字。 结果最多显示五位数。

不错的尝试,但是颠倒数字的 function 呢? 你应该很高兴知道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

所以你可以实现你自己的 function:

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

然后在整个list使用它:

reversedList = [myReverser(i) for i in [1234, 124, 654]]

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

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

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

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]))

output:

[1234, 124, 654]

这将创建一个包含 integer 个值的列表,这些值是通过反转给定列表项的字符串值生成的。

您可以使用内置的reverse()reversed()方法反转 Python 中的列表。 这些方法将反转列表而不创建新列表。 Python reverse()reversed()将反转原始列表 object 中的元素。

基于数字的旧多项式表示的无字符串方法。 通过递归长除法计算商和余数,并将它们作为一对记录在列表中。 一旦达到破坏条件,就以 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)

Output

987654321

对于数字列表的扩展:

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

Output

[4321, 421, 456]

代码:

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

输入:

123,456,789

output:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM