【问题标题】:Random Output from a list - Python列表中的随机输出 - Python
【发布时间】:2014-07-31 03:27:43
【问题描述】:
Stores = ["alpha","bravo","charlie","delta"]
KnownName = Stores.pop()
KnownName2 = Stores.pop()
KnownName3 = Stores.pop()
print KnownName+" "+Stores.pop() 
print KnownName2+" "+KnownName
print KnownName3+" "+KnownName2 
print KnownName3 

输出:

delta alpha
charlie delta
bravo charlie
bravo

所以如果我有一个 m1,m2,m3...mn 的列表 我正在尝试像这样随机输出

m1
m2 m3
m4 m2
m5
m6 m7
m8 m9
m10 m8
m11 m10

如果查看输出,一行中最多有两个值。只有第一个值可以重复。

如何改进我的代码?

foo = ['m1', 'm2', 'm3', 'm4', 'm5','m6','m7','m8']
foo.reverse()
while foo:
    try:
        if random.randrange(0,2) == 0:
            print foo.pop()
        else:
            Value2 = foo.pop()
            print Value2 + " " + foo.pop()
            if random.randrange(0,2) == 0:
                Value3 = foo.pop()
                print Value3 + " " + Value2
            else:
                foo.pop() + foo.pop()
    except:
        break

【问题讨论】:

  • 我已经尝试了这个 stackoverflow.com/questions/21192435/… 的一些变体,但对我来说并不是很好。
  • 然后只使用范围内的随机索引而不是pop() 方法。
  • 我如何获得第一个值的唯一值?

标签: python


【解决方案1】:

你可以试试这个。

from random import randint

foo = ['m1', 'm2', 'm3', 'm4', 'm5','m6','m7','m8']
while foo:
    x = randint(0, len(foo) - 1)
    y = randint(0, len(foo) - 1)
    while x == y and len(foo) > 1:
        y = randint(0, len(foo) - 1)
    if randint(0, 1) == 0 or len(foo) <= 1:
        print foo[x]
    else:
        print foo[y], foo[x]
    foo = foo[:x] + foo[x+1:]

【讨论】:

    猜你喜欢
    • 2016-03-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-21
    • 1970-01-01
    • 2022-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多