相关疑难解决方法(0)

Python 2.6中的随机字符串(这样可以吗?)

我一直试图找到一种更加pythonic的方法来生成python中的随机字符串,它也可以扩展.通常情况下,我会看到类似的东西

''.join(random.choice(string.letters) for i in xrange(len))
Run Code Online (Sandbox Code Playgroud)

如果你想生成长字符串很糟糕.

我一直在考虑random.getrandombits一段时间,并想出如何将其转换为一个位数组,然后十六进制编码.使用python 2.6我遇到了bitarray对象,没有记录.不知何故,我让它工作,它似乎真的很快.

它在我的笔记本上生成一个50mil的随机字符串,仅需3秒钟.

def rand1(leng):
    nbits = leng * 6 + 1
    bits = random.getrandbits(nbits)
    uc = u"%0x" % bits
    newlen = int(len(uc) / 2) * 2 # we have to make the string an even length
    ba = bytearray.fromhex(uc[:newlen])
    return base64.urlsafe_b64encode(str(ba))[:leng]
Run Code Online (Sandbox Code Playgroud)

编辑

heikogerlach指出,造成这个问题的人数奇怪.添加了新代码以确保始终从偶数个十六进制数字发送.

仍然很好奇,如果有更好的方法做到这一点同样快.

python random python-2.6

77
推荐指数
3
解决办法
4万
查看次数

生成具有较低拉丁字母的大随机字符串的最快方法

我正试图从蒂姆斯在线评判中解决这个问题.要解决此问题,您需要生成一个包含1 000 000个小写拉丁字母的序列,并在1秒内将其写入标准输入.

使用C++或Java很容易解决这个问题.我这里有python解决方案:

import os
from random import randint

s = ''.join(chr(97 + randint(0, 25)) for i in range(1000000))
os.write(1, bytes(s, 'utf8'))
Run Code Online (Sandbox Code Playgroud)

需要1.7秒:

$ time python3.3 1219.py > /dev/null

real    0m1.756s
user    0m1.744s
sys     0m0.008s
Run Code Online (Sandbox Code Playgroud)

我得到了"超出时间限制"的结果.所以问题是"如何更快地做到这一点?"

UPD1:使用randint(97, 122)减少16ms的时间.现在是1.740s

UPD2: @Martijn Pieters的解决方案需要0.979秒,但它也没有通过测试.

UPD3 Martijn Pieters提出了一个非常好的解决方案,但它仍然很慢:

from sys import stdin
from random import choice
from string import ascii_lowercase

s = ''.join([choice(ascii_lowercase) for _ in range(1000000)])
stdout.write(s) 
Run Code Online (Sandbox Code Playgroud)

需要0.924秒

from sys import stdout
from random import …
Run Code Online (Sandbox Code Playgroud)

python random performance stdin python-3.x

12
推荐指数
2
解决办法
7529
查看次数

是否有快速算法来删除字符串中重复的子串?

有一个像它的字符串

dxabcabcyyyydxycxcxz
Run Code Online (Sandbox Code Playgroud)

我想将它合并到

dxabcydxycxz
Run Code Online (Sandbox Code Playgroud)

其他例子: ddxddx - > dxdx,abbab - > abab.

规则是:

if (adjacent and same): merge

# Such as 'abc',they are same and , so I will delete one of them .
# Although 'dx' is same as 'dx',they are nonadjacent,so I do not delete any of them
# If one character has been deleted, we don't delete any sub-string include it 
Run Code Online (Sandbox Code Playgroud)

我在python的代码中完成了它,但是当它在一个长字符串中时它很慢.

# original string
mystr = "dxabcabcyyyydxycxcxz"
str_len = len(mystr)
vis = [1] *str_len #Use a …
Run Code Online (Sandbox Code Playgroud)

python string algorithm

9
推荐指数
2
解决办法
1098
查看次数

python中测试自动化的随机数据

我正在使用unittest和selenium来自动化我的浏览器测试.

我将如何进行多次运行的测试,用户创建票证.票证必须有一个标题名称,每次我运行测试我希望标题名称是随机的.

我想格式:"测试票,1 |测试票,2 ......"

python selenium automation webdriver

2
推荐指数
1
解决办法
2783
查看次数

如何生成随机字符串

我正在尝试做一个生成随机字符串的代码,但我刚开始编码所以我不希望代码太复杂.

import random, string
randomthing = random.choice(string)
print(randomthing(10))
Run Code Online (Sandbox Code Playgroud)

但它一直说长度(len)没有定义.我该怎么办?

python python-3.x

1
推荐指数
2
解决办法
3万
查看次数