【问题标题】:Random sample within a certain range in a list (array) | Python 3.x列表(数组)中一定范围内的随机样本 | Python 3.x
【发布时间】:2018-03-30 23:04:04
【问题描述】:

我有一个列表,里面有很多这样的字符:

list = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q',
        'r','s','t','u','v','w','x','y','z','1','2','3','4','5','6','7','8','9',
        '0'," ",'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P',
        'Q','R','S','T','U','V','W','X','Y','Z']

我希望程序在列表的前 26 个(小写字母)项目中随机选择 8 个字符。我不会删除或分离这个数组中的其他项目,因为我以后需要它们来做类似的事情。

我对编程有点陌生,我更喜欢简单的解决方案,尽管我不会阻止您将更复杂的东西放在那里供其他人查看。

提前致谢!

【问题讨论】:

  • 通常,对于这种 1 字符的字符串序列,您不需要列表;只需使用单个字符串list = 'abc...xyz1234567890 ABC...XYZ'
  • 作为旁注,如果您的列表与您的列表相似,您是否看过 python 的字符串模块?特别是 string.ascii_letters 和 string.digits?
  • 在导入字符串后,mylist = list(string.ascii_lowercase + string.digits + " " + string.ascii_uppercase) 会给你几乎完全一样的东西(改变 0 的位置),或者删除list() 得到@chepner 的建议。

标签: python python-3.x list random range


【解决方案1】:

您可以对数组进行切片,对其进行采样。

random.sample(seq[:26], k=8)

【讨论】:

    【解决方案2】:

    首先你需要random module:

    import random
    

    然后我会使用这个解决方案:

    your_list = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q',
            'r','s','t','u','v','w','x','y','z','1','2','3','4','5','6','7','8','9',
            '0'," ",'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P',
            'Q','R','S','T','U','V','W','X','Y','Z']
    
    first_26_characters = your_list[0:26] # get items from 0 to 26 in new list
    random.shuffle(first_26_characters) # shuffle new list
    random_8_characters = first_26_characters[0:8] # get first 8 characters because after shuffle they are random
    

    我希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-24
      • 1970-01-01
      相关资源
      最近更新 更多