Python,生成随机的括号字符串
我希望生成方括号的随机长度和图案,例如, [][[]][[]] 到目前为止,我已经设法让我的程序随机生成括号,但随机生成括号的次数是多少,所以目前我的程序给我的结果是 【】【】【】【】【】 […] 【】【】【】【】 因此,括号内没有随机性,仅显示括号数的随机性 我想知道如何随机排列括号的顺序以及显示的括号数量 这是我到目前为止的代码Python,生成随机的括号字符串,python,string,random,Python,String,Random,我希望生成方括号的随机长度和图案,例如, [][[]][[]] 到目前为止,我已经设法让我的程序随机生成括号,但随机生成括号的次数是多少,所以目前我的程序给我的结果是 【】【】【】【】【】 […] 【】【】【】【】 因此,括号内没有随机性,仅显示括号数的随机性 我想知道如何随机排列括号的顺序以及显示的括号数量 这是我到目前为止的代码 import random import string def randomGen(N): return random.randint(1,N) cha
import random
import string
def randomGen(N):
return random.randint(1,N)
char1 = '['
char2 = ']'
finalist = []
newList = []
newList2 = []
newValue = randomGen(99)
for i in range(newValue):
newList = char1
newList2 = char2
finalist.append(newList + newList2)
for everChar in finalist:
print everChar,
谢谢。您可以使用
random.sample
来选择放置位置的索引,例如左括号。然后在其他地方放置右括号:
In [119]: import random
In [122]: N = 10
In [125]: idx = set(random.sample(range(N), N//2))
In [126]: idx
Out[126]: {0, 1, 4, 5, 7}
In [127]: ''.join(['[' if i in idx else ']' for i in range(N)])
Out[127]: '[[]][[][]]'
根据您的示例,我假设您需要相等数量的左括号和右括号。如果不需要,请使用jonrsharpe的解决方案。您需要从两个字符中随机选择;您可以在一行中完成所有操作:
finallist = [random.choice('[]') for _ in range(random.randint(1, 99))]
您还可以简化输出:
print " ".join(finallist)
我刚才运行的一个示例:
[ ] ] [ [ [ ] [ ] ] [
您还可以生成字符串而不是列表:
length_to_generate = randomGen(99)
finalist = ""
for i in range(length_to_generate):
if random.randint(0, 1):
finalist += "]"
else:
finalist += "["
print finalist
好吧,如果你只是想修复你的代码,你可以简单的做
finalist = list("".join(finalist))
random.shuffle(finalist)
for everChar in finalist:
...
如果你想要高效更好的方法,请看一下其他答案。
random.choice(“[]”)
会很好,而且对我来说更可读。我更喜欢“”。加入(random.choice(“[]”)范围内的(random.randint(1,99)))
:)@thefourtheye为一行?因为而不是genexps@GrijeshChauhan哦,是的,我最近才读到。谢谢你提醒我:)我已经通过朋友的帮助让我的工作正常了,但是我也在寻找我的程序来告诉用户结果是平衡的还是不平衡的。我的意思是[][](平衡的)和[]不平衡。你知道我将如何实施这个吗?
finalist = list("".join(finalist))
random.shuffle(finalist)
for everChar in finalist:
...