2016-11-17 177 views
0

我有不同長度列表的列表。從每個列表中,我需要隨機選擇10個項目。然後,我必須將結果合併到一個列表中,每個列表項以逗號分隔。 (請參閱下面的輸出)。不確定這在Python中是否可行。任何幫助,將不勝感激。從Python列表中選擇隨機項目

[[-26.0490761 27.79991 ] 
[-25.9444218 27.9116535] 
[-26.1055737 27.7756424] 
..., 
[-26.036684 28.0508919] 
[-26.1367035 28.2753029] 
[-26.0668163 28.1137161]] 

[[ 45.35693 -63.1701241] 
[ 44.6566162 -63.5969276] 
[ 44.7197456 -63.48137 ] 
    ..., 
[ 44.624588 -63.6244736] 
[ 44.6563835 -63.679512 ] 
[ 44.66706 -63.621582 ]] 

我想得到這種格式的輸出,它適合在使用Folium的地圖上繪製它們。

[[-26.0490761 27.79991], 
    [-25.9444218 27.9116535], 
    [ 44.6563835 -63.679512 ], 
    [ 44.66706 -63.621582 ]] 

我想這個代碼,但不知道哪裏出了問題:

for cluster in clusters: 
    for i in range(2): 
     modifiedlist.append(cluster) 
+2

你想讓別人爲你做,因爲你不想花時間與它? – quantummind

+0

@quantummind:不,它不是那個意思。我錯過了添加我嘗試過的代碼,現在我已經添加了它。 – user3447653

回答

1

像這樣的事情是很容易使用的模塊random

import random 

def sampleFromLists(lists,n): 
    """draws n elements from each list in lists 
returning the result as a single list""" 
    sample = [] 
    for subList in lists: 
     sample.extend(random.sample(subList,n)) 
    return sample 

的樣本數據(名單列表2元素列表):

data = [ 
    [[-26.0490761, 27.79991], 
    [-25.9444218, 27.9116535], 
    [-26.1055737, 27.7756424], 
    [-26.036684, 28.0508919], 
    [-26.1367035, 28.2753029], 
    [-26.0668163,28.1137161]], 

    [[ 45.35693, -63.1701241], 
    [44.6566162 -63.5969276], 
    [44.7197456, -63.48137], 
    [44.624588, -63.6244736], 
    [44.6563835,-63.679512], 
    [44.66706, -63.621582]] 
] 

然後:

>>> sampleFromLists(data,2) 
[[-26.036684, 28.0508919], [-26.0490761, 27.79991], [44.7197456, -63.48137], [44.6563835, -63.679512]] 
+0

感謝您的回覆。但是當我們傳入[[1,2,3,4],[5,6,7,8],[9,10,11,12]]並從每個列表中隨機選擇2個數字時,輸出必須是[[2,3] [5,6],[9,12]](每個列表中的隨機2個元素)。 – user3447653

+0

如果需要,只需在上面的代碼中用'append'替換'extend'即可。請注意,您的數據似乎是2元素列表列表的列表,所以我認爲如果您使用* your *數據運行我的代碼(假設它只是列表的一個大列表),那麼輸出將是一個2元素列表的列表。因此,除非我誤解了你的設置,否則我認爲我的代碼應該按原樣工作。 –

+0

@ user3447653編輯顯示我的意思 - 我使樣本反映了您的問題中的數據。 –

0
import random 

x = [[1,2],[3,4],[5,6],[7,8],[9],[7675,6456,4],[5,6]] 

z = [] 
for i in range(10): 
    y = random.choice(x) 
    z.append([random.choice(y), random.choice(y)]) 

print(z) 

random.choice()挑選從給定輸入一個隨機項(在本例中的列表)。