【问题标题】:making a list of all possible random 3 characters or 4 characters列出所有可能的随机 3 个字符或 4 个字符
【发布时间】:2019-07-10 10:13:34
【问题描述】:

我正在制作一个列表生成器。我尝试了多次,但我提出了一个很长但并不完美的解决方案。我想要一个包含所有可能性的生成列表,假设所有 3 个字符的列表大约有 50k 的可能性 例如 : aaa , aab , aac 直到到达 zzz999

假设我想从多个用户名中抓取关注者

www.website.com/[generated_username]

我想让那个生成器为我创建所有 3 个字母或所有 4 个字母的所有可能性。

所以我做了一个包含所有字母+数字的列表 我创建了 3 个变量名称 timer1 + timer2 + timer3 这对我有用,但它很慢+很长的代码

timer1 = 0
timer2 = 0
timer3 = 0
target = ['q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', 'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'z', 'x', 'c', 'v', 'b', 'n', 'm', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
user_ = target[timer3]+target[timer2]+target[timer1]
while True :
    if timer1 == 36 :
        timer1 = 0
        timer2 = timer2+1
    if timer2 == 36 :
        timer1 = 0
        timer2 = 0
        timer3 = timer3+1
    if timer3 == 36 :
        print('done')
    print(user_)
    timer1 += 1

我希望获得更容易和更快的代码来生成所有 3 种或什至 5 种可能性。

【问题讨论】:

标签: python python-3.x string list


【解决方案1】:

您可以为此使用itertools.product,将重复次数设置为3

from string import ascii_lowercase, digits
from itertools import product

s = ascii_lowercase + digits
#'abcdefghijklmnopqrstuvwxyz0123456789'

list(map(''.join, product(s, repeat=3)))
# ['aaa', 'aab', 'aac', 'aad', 'aae', 'aaf', 'aag'...

【讨论】:

  • 要获得'0123456789',您可以使用string.digits
  • 这实际上写了所有 3 个字符,即使我不知道它是如何工作的,哈哈,我正在努力理解它,非常感谢,顺便说一句,如果我想写所有 4 个字符,我应该将重复 = 3 更改为 = 4对吗?
  • 是的,没错@kingmajesty 检查itertools.product 上的链接文档。它执行笛卡尔积
  • 哦,别忘了您可以投票和接受答案,请参阅What should I do when someone answers my question?@kingmajesty 谢谢!
猜你喜欢
  • 1970-01-01
  • 2015-09-18
  • 1970-01-01
  • 1970-01-01
  • 2023-01-04
  • 1970-01-01
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
相关资源
最近更新 更多