Python,生成随机字符串括号

时间:2014-02-25 16:02:30

标签: python string random

我希望生成随机长度和方括号图案,例如, []] [[]] [[] [[]] []

到目前为止,我设法让我的程序随机生成括号,但随机生成它们的次数,所以目前我的程序给我的结果如,

[] [] [] [] [] []

[] [] []

[] [] [] [] []

因此括号内没有随机性,只显示括号中的随机性。

我想知道如何将括号的顺序随机ASWELL作为显示的括号数量。

到目前为止,这是我的代码,

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,

感谢。

4 个答案:

答案 0 :(得分:4)

您可以使用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的解决方案。

答案 1 :(得分:4)

您需要从两个角色中随机选择;你可以在一行中完成这一切:

 finallist = [random.choice('[]') for _ in range(random.randint(1, 99))]

您还可以简化输出:

print " ".join(finallist)

我跑的一个例子:

[ ] ] [ [ [ ] [ ] ] [

答案 2 :(得分:4)

好吧,如果您只想修改代码,可以直接执行

finalist = list("".join(finalist))
random.shuffle(finalist)
for everChar in finalist:
    ...

如果您想要有效且更好的方法,请查看其他答案。

答案 3 :(得分:1)

import random
import string

def randomGen(N):
    return random.randint(1,N)

length_to_generate = randomGen(99)
finalist = []
for i in range(length_to_generate):
    if random.randint(0, 1):
        finalist.append("[")
    else:
        finalist.append("]") 

for everChar in finalist:
    print everChar,

您还可以生成字符串而不是列表:

length_to_generate = randomGen(99)
finalist = ""
for i in range(length_to_generate):
    if random.randint(0, 1):
        finalist += "]"
    else:
        finalist += "["

print finalist