Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何用python编写程序来生成所有n位数字,其中只有4和7作为数字?_Python - Fatal编程技术网

如何用python编写程序来生成所有n位数字,其中只有4和7作为数字?

如何用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.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 itertools.product(['4', '7'], repeat=2):
   ....:     print int(''.join(i))
   ....:
44
47
74
77

repeat
参数是您的
n

如果您需要所有2位数字,并且只有
7
4
作为数字,我将使用二进制:

base-2中的最大2位数为
11b
ie
3
,因此:

0 => 00b
1 => 01b
2 => 10b
3 => 11b

然后将
0
替换为
4
,将
1
替换为
7
(任意),给出:
44,47,74,77
如果您需要所有2位数字,且仅
7
4
作为数字,我将使用二进制:

base-2中的最大2位数为
11b
ie
3
,因此:

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很慢,元组也比列表快