6 python string random variables
我想随机化一个字符串的情况,继承我所拥有的:
word="This is a MixeD cAse stRing"
word_cap=''
for x in word:
if random.randint(0,1):
word_cap += x.upper()
else:
word_cap += x.lower()
word = word_cap
print word
Run Code Online (Sandbox Code Playgroud)
我想知道你是否可以使用列表理解来加快速度.我似乎无法使用randomchoice中的lower()和upper()函数,我试图做类似的事情
''.join(randomchoice(x.upper(),x.lower()) for x in word)
Run Code Online (Sandbox Code Playgroud)
但我认为那是错的.这样的事情虽然可能吗?
import random
s = 'this is a lower case string'
''.join(random.choice((str.upper,str.lower))(x) for x in s)
Run Code Online (Sandbox Code Playgroud)
random.choice
随机地选择一个从两个功能str.upper
,str.lower
.
然后,此函数将应用于x
输入字符串中的每个字母s
.
如果初始字符串包含所有小写字母,我将使用此代码:
''.join(x.upper() if random.randint(0,1) else x for x in s)
Run Code Online (Sandbox Code Playgroud)
因为在str.lowercase
小写初始字符串的情况下,初始代码将在一半字母上使用冗余.
顺便说一下,请看Michael J. Barber的另一个答案.Python对函数调用收费很高.在他的代码中,他str.upper
只调用一次.在我的代码str.upper
中调用大约一半的初始字符串符号.因此,在内存中仍然会创建一个临时的大写字符串,他的代码的时间效率可能会更高.
代码时序比较:https://ideone.com/eLygn