2013-05-12 17 views
14

Ben benzer list2 içine list1, ve y-veri (metin dosyaları) x verileri okudum: noktalarını {0.0, -5,605} çizmek amacıylaKoordinat çiftlerini çizmek için iki listeyi nasıl birleştirebilirsiniz?

list1 = { 0.0, 0.172, 0.266, ..} 
list2 = {-5.605, -5.970, -6.505, ..} 

nasıl iki listelerini birleştirerek yok, {0.172, -5,970}, {0,266, -6,505}, sen sevmiyorsan ....

+1

belki denemek istiyorum: ~ 'Riffle [list1, list2] ~ Bölümünü 2' –

+1

kullanıcı bu kapalı neden bir açıklama hak ediyor. Bu kesinlikle "konu dışı" değildir. – agentp

+1

Kapanışlara: Hiç bilmediğiniz bir dil hakkındaki düşünceleriniz (Mathematica (TM)) karşılanmadı. Yakın güçlerini daha akıllı bir şekilde kullanmalısın. –

cevap

16

Pinguin Dirk en öneri İşte

Transpose[{list1,list2}] 
2

denemek eşleştirmek için yeniden kullanılabilir işlev oluşturur başka cevaptır iki vektör kadar. İşlev, çiftleri oluşturmak için en kısa vektörün uzunluğu boyunca eşlenen saf bir işlev kullanır. Bu yardımcı olur

list1 = {1, 2, 3, 4, 5}; 
    list2 = {13, 18, 20, 18, 13}; 
    pairUp[xValues_ , yValues_] := ({xValues[[#]], yValues[[#]]}) & /@ 
     Range[Min[Length[xValues], Length[yValues]]]; 

    pairUp[list1, list2] 
    (* 
     {{1, 13}, {2, 18}, {3, 20}, {4, 18}, {5, 13}} 
    *) 

Umut,

Edmund

PS: Matematica Yeni ve zaman zaman burada birkaç soruya yanıt çalışarak benim anlayış geliştirmek umuduyla.

7

henüz başka ..

MapThread[ {#1, #2} & , {list1, list2}] 

veya incelikle eşitsiz uzunluğu listelerini ele istiyorsanız:

MapThread[ {#1, #2} &, Take[#, All, Min @@ Length /@ #] &@{list1, list2} ] 
+1

Bunu “MapThread [Liste, {list1, list2}]' yi kullanarak bile basitleştirebilirsiniz. – lkuty

İlgili konular