【问题标题】:Python- How to form a random partition of 2 lists [closed]Python-如何形成2个列表的随机分区[关闭]
【发布时间】:2017-08-29 00:41:58
【问题描述】:

有谁知道如何在 python 中形成 2 个列表(List1 和 List2)的随机分区?列表不必具有相同的大小。 例如:

S = [1,2,3,4,5,6,7]
List1=[3,6,1,2]
List2=[5,4,7]

List1 =[3,5]
List2=[1,2,4,7,6]

【问题讨论】:

  • 你有没有尝试过?
  • 嗨。我还没有。我对 Python 很陌生。我正在尝试使用模拟退火形成一个随机初始解决方案来解决最小切割问题。
  • 抱歉,我们不是来为您编写代码或为您提供个人培训的。请先尝试一些东西,阅读教程等......当你有代码要显示时回来。

标签: python list random partition


【解决方案1】:

不确定您拥有哪些模块,但这是一个可以满足您需求的功能。

import random
def split(S): 
    x = random.randint(0,len(S))
    y = len(S)-x
    S1 = S[0:x]
    S2 = []
    for i in range(len(S)):
        if S[i] not in S1:
           S2.append(S[i])
    return S1,S2

【讨论】:

  • 谢谢!!如果我希望第一个元素始终在列表 1 中,而最后一个元素始终在列表 2 中,您知道如何修改代码吗?
【解决方案2】:

我会推荐:

  1. 随机或随机重新排列列表
  2. 然后选择分解列表的随机索引

代码:

import random

S = [1,2,3,4,5,6,7]
random.shuffle(S)
index = random.randint(0, len(S))
List1 = S[index:]
List2 = S[:index]

【讨论】:

    【解决方案3】:

    我不确定您的随机性和分区规则是什么,但这应该可以帮助您入门:

    import random
    
    s = [1,2,3,4,5,6,7]
    
    random.shuffle(s)
    
    cut = random.randint(0, len(s))
    list_1 = s[:cut]
    list_2 = s[cut:]
    
    print list_1
    print list_2
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-22
      • 1970-01-01
      • 2021-10-07
      • 2021-01-07
      • 1970-01-01
      • 1970-01-01
      • 2021-12-02
      相关资源
      最近更新 更多