我如何找到一个数字的不同数字 Python
How would I find get the distinct digits of a number Python
我需要找到一个数字的所有不同数字并将它们放在一个数组中,而不是循环。
我已经尝试过循环,但是太慢了。
如果数字是 4884,那么我会得到 [4,8] 作为输出。
>>> r = set(map(int, str(4884)))
>>> r
{8, 4}
你可以使用 numpy unique
:
num = 4884
res = np.unique(list(str(num))).astype(int)
print(res)
输出:
[4 8]
您也可以这样做:
list(dict(zip(map(int, list(str(num))), [0]*len(str(num)))).keys())
不确定您为什么想要这么复杂的东西。它可能并不比使用 set
.
快
一些测试:
import timeit
>>> timeit.timeit('import numpy as np; np.unique(list(str(4884))).astype(int)', number=10000)
0.1892512352597464
timeit.timeit('set(map(int, str(4884)))', number=10000)
0.02349709570256664
timeit.timeit('map(int, list(dict.fromkeys(list(str(4884)))))', number=10000)
0.02554667675917699
timeit.timeit('list(dict(zip(map(int, list(str(4884))), [0]*len(str(4884)))).keys())', number=10000)
0.03316584026305236
使用set
绝对是最快的。
使用这个技巧
a = 658556
a = str(a)
mylist = list(dict.fromkeys(list(a)))
print(mylist)
输出:
['6', '5', '8']
我需要找到一个数字的所有不同数字并将它们放在一个数组中,而不是循环。
我已经尝试过循环,但是太慢了。
如果数字是 4884,那么我会得到 [4,8] 作为输出。
>>> r = set(map(int, str(4884)))
>>> r
{8, 4}
你可以使用 numpy unique
:
num = 4884
res = np.unique(list(str(num))).astype(int)
print(res)
输出:
[4 8]
您也可以这样做:
list(dict(zip(map(int, list(str(num))), [0]*len(str(num)))).keys())
不确定您为什么想要这么复杂的东西。它可能并不比使用 set
.
一些测试:
import timeit
>>> timeit.timeit('import numpy as np; np.unique(list(str(4884))).astype(int)', number=10000)
0.1892512352597464
timeit.timeit('set(map(int, str(4884)))', number=10000)
0.02349709570256664
timeit.timeit('map(int, list(dict.fromkeys(list(str(4884)))))', number=10000)
0.02554667675917699
timeit.timeit('list(dict(zip(map(int, list(str(4884))), [0]*len(str(4884)))).keys())', number=10000)
0.03316584026305236
使用set
绝对是最快的。
使用这个技巧
a = 658556
a = str(a)
mylist = list(dict.fromkeys(list(a)))
print(mylist)
输出:
['6', '5', '8']