如何使用itertools生成电话号码

如何解决如何使用itertools生成电话号码

我想使用itertools生成所有可能电话号码的文件

from itertools import permutations
perm = list(permutations(['1','2','3','4','5','6','7','8','9','0'],7))
prefix = ['071','070','076','077','075']
file_to_write = open("numbers.txt",'w')
for pre in prefix:
    for per in perm:
        per = ''.join(per)
        file_to_write.write(pre+per+"\n")


file_to_write.close()`

这给了我一个庞大的数字列表,但是缺少一些数字,因为它不能在一个组合中两次使用一个数字作为示例,该列表没有项'0713025693',因为重复了数字3。我能做什么。请帮助我。

解决方法

请使用permutations,而不要使用不允许重复的product。在这种情况下,您需要:

from itertools import product

product(['1','2','3','4','5','6','7','8','9','0'],repeat=7)

或者,正如鲍里斯指出的那样,您可以传递字符串而不是列表(因为字符串是可迭代的),例如

product('1234567890',repeat=7)

或者您可以import string并使用:

product(string.digits,repeat=7)

对于其中任何一个,您都可以将结果传递到list来生成列表,但这会很长。最好将其保留为迭代器,使用它来迭代值,而不实际将它们存储在列表中。请注意,作为迭代器,如果只能被遍历一次,那么如果需要多次遍历,则需要重新创建它。

,

改为使用itertools.product(笛卡尔积):

from itertools import product
list(product('ab',(0,1,2)))

[('a',0),('a',1),2),('b',2)]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?