【问题标题】:How do I take a list and print all of the content in a random order, printing each exactly one time in python? [duplicate]如何获取列表并以随机顺序打印所有内容,在 python 中准确打印一次? [复制]
【发布时间】:2014-03-02 06:29:17
【问题描述】:

这就是我所拥有的:

>>> import random
>>> chars = [1, 6, 7, 8, 5.6, 3]
>>> for k in range(1, len(chars)+1):
...   print random.choice(chars)
...   chars[random.choice(chars)] = ''
...

但是当我运行它时,

5.6
1

5.6

8
>>> 

我不希望它随机打印每个内容,我希望它以随机顺序打印所有内容一次。为什么要打印空格?

【问题讨论】:

标签: python python-2.7 for-loop random


【解决方案1】:

试试这个:

import random
chars = [1, 6, 7, 8, 5.6, 3]
r = chars [:] #make a copy in order to leave chars untouched
random.shuffle (r) #shuffles r in place
print (r)

【讨论】:

    【解决方案2】:
    import random
    chars = ['s', 'p', 'a', 'm']
    
    random.shuffle(chars)
    for char in chars:
        print char
    

    这将在原地随机化列表。

    【讨论】:

      【解决方案3】:
      list = [1, 6, 7]
      random.shuffle(list)
      for k in range(1,len(list)+1):
          print list[k]
      

      【讨论】:

        【解决方案4】:

        这是您的代码的工作版本。

        import random
        chars = [1, 6, 7, 8, 5.6, 3]
        for k in range(1, len(chars)+1):
            thechar = random.choice(chars)
            place = chars.index(thechar)
            print thechar
            chars[place:place+1]=''
        

        当您在print random.choice(chars)chars[random.choice(chars)] = '' 中执行两次random.choice 时,它​​会从chars 中选择另一个随机选项。相反,将random.choice 设置为某个值,以便您以后可以调用它。即使您已经这样做了,当您设置chars[random.choice(chars)] = '' 时,它只会将该位置设置为'',它不会删除它。所以如果你的random.choice5.6,那么chars 列表就会变成[1, 6, 7, 8, '', 3],而不是[1, 6, 7, 8, 3]。为此,您必须保存字符的位置,然后执行chars[place:place+1]。最后,由于for 语法,您必须执行len(chars)+1,这样它只会转到len(chars)

        【讨论】:

          【解决方案5】:

          请参阅以下链接: Shuffle and re shuffle list in python?

          from random import shuffle
          
          x = [[i] for i in range(10)]
          shuffle(x)
          
          print x
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2011-12-08
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-04-02
            • 2018-08-25
            相关资源
            最近更新 更多