如何用python编写程序来生成所有n位数字,其中只有4和7作为数字?
我尝试使用itertools.permutations生成置换,但我对如何为n个数字生成置换感到非常困惑。我将使用如何用python编写程序来生成所有n位数字,其中只有4和7作为数字?,python,Python,我尝试使用itertools.permutations生成置换,但我对如何为n个数字生成置换感到非常困惑。我将使用itertools.product: In [26]: for i in itertools.product(['4', '7'], repeat=2): ....: print int(''.join(i)) ....: 44 47 74 77 repeat参数是您的n我将使用itertools.product: In [26]: for i in itert
itertools.product
:
In [26]: for i in itertools.product(['4', '7'], repeat=2):
....: print int(''.join(i))
....:
44
47
74
77
repeat
参数是您的n
我将使用itertools.product
:
In [26]: for i in itertools.product(['4', '7'], repeat=2):
....: print int(''.join(i))
....:
44
47
74
77
repeat
参数是您的n
如果您需要所有2位数字,并且只有7
,4
作为数字,我将使用二进制:
base-2中的最大2位数为11b
ie3
,因此:
0 => 00b
1 => 01b
2 => 10b
3 => 11b
然后将
0
替换为4
,将1
替换为7
(任意),给出:44,47,74,77
如果您需要所有2位数字,且仅7
,4
作为数字,我将使用二进制:
base-2中的最大2位数为11b
ie3
,因此:
0 => 00b
1 => 01b
2 => 10b
3 => 11b
然后用
4
替换0
,用7
替换1
(任意),给出:44,47,74,77
让我们看看你得到了什么。你想要多少位数字?您也可以使用rand()函数。我会:1)生成0到1之间的n个数字,并将它们存储在一个数组中。2) 如果(n[i]==0)n[i]=4;如果(n[i]==1)n[i]=7;3) 然后我将n[]中的所有数字相加,第一个数字乘以1,第二个数字乘以10,第三个数字乘以100,等等……)让我们看看你到目前为止得到了什么。你想要多少位数?您也可以使用rand()函数。我会:1)生成0到1之间的n个数字,并将它们存储在一个数组中。2) 如果(n[i]==0)n[i]=4;如果(n[i]==1)n[i]=7;3) 然后我将n[]中的所有数字相加,第一个数字乘以1,第二个数字乘以10,第三个数字乘以100,等等……)有没有办法将元组的输出转换成字符串或int,例如“47”而不是(4,7)@kartikhare:您必须生成4
和7
字符串。从那里,你可以做int(''.join(i))
或reduce(lambda x,y:10*x+y,(1,2,3))
@jamylak:奇怪的是,处理字符串的速度几乎是reduce
@Blender的两倍,因为lambda
的速度很慢,元组比列表快。有没有办法将元组的输出转换为字符串或int,例如“47”而不是(4,7)@kartikhare:您必须生成4
和7
字符串。从那里,你可以做int(''.join(i))
或reduce(lambda x,y:10*x+y,(1,2,3))
@jamylak:奇怪的是,处理字符串的速度几乎是reduce
@Blender的两倍,因为lambda
s很慢,元组也比列表快