2017-04-04 36 views
-1

有誰知道如何在python中形成2個列表(List1和List2)的隨機分區?列表不必具有相同的大小。 例如:Python-如何形成2個列表的隨機分區

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] 
+0

你嘗試過什麼嗎? – Julien

+0

嗨。我還沒有。我對Python很陌生。我正在嘗試使用模擬退火形成求解最小割問題的隨機初始解。 – user02

+0

對不起,我們不是在這裏爲你寫代碼或給你個人培訓。請先嚐試一下,閱讀教程等,並在有代碼顯示時再回來。 – Julien

回答

1

我不知道你的規則是圍繞隨機性和分區,但這應該讓你開始:

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 
+0

非常感謝! – user02

1

我會建議:

  1. Shuffl E或隨機重新排列列表
  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] 
+0

非常感謝!我認爲這就是我需要的 – user02

0

不知道你有什麼模塊,但這個是做什麼的功能你要。

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 
+0

謝謝!你知道如何修改代碼,如果我想第一個元素總是在列表1中,最後一個元素總是在列表2中? – user02