【问题标题】:python-choose random member in one array and remove it in the other identical arraypython-选择一个数组中的随机成员并在另一个相同的数组中删除它
【发布时间】:2011-09-11 21:18:32
【问题描述】:

我有 2 个数组,一个是主数组,另一个是临时数组,临时数组选择 1 个随机数,然后它应该删除主数组中的那个成员,因为两个数组的内容是相同的。怎么做 ?下面是代码

import random
spil=['1t','2t','3t','4t','5t','6t','7t','8t','9t','10t','12t','13t','14t'\
           ,'1k','2k','3k','4k','5k','6k','7k','8k','9k','10k','12k','13k','14k'\
           ,'1e','2e','3e','4e','5e','6e','7e','8e','9e','10e','12e','13e','14e'\
           '1p','2p','3p','4p','5p','6p','7p','8p','9p','10p','12p','13p','14p']
print(spil)
izvucena = random.sample(['1t','2t','3t','4t','5t','6t','7t','8t','9t','10t','12t','13t','14t'\
           ,'1k','2k','3k','4k','5k','6k','7k','8k','9k','10k','12k','13k','14k'\
           ,'1e','2e','3e','4e','5e','6e','7e','8e','9e','10e','12e','13e','14e'\
           '1p','2p','3p','4p','5p','6p','7p','8p','9p','10p','12p','13p','14p'],1)
spil.remove(izvucena)
print(spil)

【问题讨论】:

    标签: python arrays string list variables


    【解决方案1】:

    你的问题是random.sample返回一个列表,你真的想做这样的事情:

    izvucena = random.sample(spil, 1)[0] # grab only element from list returned
    

    虽然使用random.choice 会更简单:

    izvucena = random.choice(spil)
    

    【讨论】:

    • 我是 python 编程新手,但我也得出结论,它返回列表,我不知道如何将其转换为字符串或其他东西,random.choice 是否自动返回字符串?
    • 不,random.choice 从列表中返回实际元素,它不做任何转换。如果你想使用random.sample,你可以使用切片表示法从列表中获取第一个元素,就像我上面的例子一样。
    • zeekay 成功了,您的 random.choice 建议完美无缺 :) 非常感谢 :)
    【解决方案2】:

    问题是random.sample() 返回一个列表,而不是单个元素,在这种情况下izvucena 是一个包含一个元素的列表。只需将倒数第二行替换为 spil.remove(izvucena[0]) 即可删除元素本身。

    【讨论】:

      【解决方案3】:

      除非您需要临时列表来做其他事情,否则确实不需要删除随机值,您可以这样做:

      spil.remove(random.choice(spil))
      

      【讨论】:

      • 我需要该临时变量来在类中分配对象属性,但感谢您的回答,我相信这也会对某人有所帮助:)
      猜你喜欢
      • 1970-01-01
      • 2021-11-06
      • 1970-01-01
      • 1970-01-01
      • 2016-09-09
      • 2018-03-24
      • 2010-12-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多