[問題] 如何比較list裡面各項數字的大小並重組?

看板Python作者 (METALLICA-JAMES)時間12年前 (2013/07/31 08:02), 編輯推噓3(3036)
留言39則, 11人參與, 最新討論串1/5 (看更多)
不好意思小弟不材又要來打擾各位神手大大了 因為最近一直在用list來寫東西, 所以都是問有關list的問題 我現在出現的問題: s = [10.0, 31.0, 25.0, 77.0, 66.0] t = [7.0, 42.0, 45.0, 49.0, 60.0] 我想讓這兩個list的每一個相對的元素去比大小 然後比較小的值去組成一個新的list 例如:10 和 7比較 7比較小 7留下 31 和 42比較 31比較小 31留下 ....已此類推 最後會組成新的list u u = [7.0, 31.0, 25.0, 49.0, 60.0] 請問要達到這個目的要怎麼寫呢? -- M M EEEEE TTTTT A L L IIIII CCCCC A !!! MM MM E T A A L L I C A A !!! M M M EEEEE T AAAAA L L I C AAAAA !!! M M E T A A L L I C A A M M EEEEE T A A LLLLL LLLLL IIIII CCCCC A A !!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.114.95.170

07/31 16:10, , 1F
感覺你都沒有認真去想。
07/31 16:10, 1F

07/31 16:11, , 2F
u=[a if a < b else b for a, b in zip(s, t)]
07/31 16:11, 2F

07/31 16:36, , 3F
非常感謝你....因為我開始碰python不到兩週.我會的東西
07/31 16:36, 3F

07/31 16:37, , 4F
真的很少...加上我先前真的沒學過什麼程式語言...
07/31 16:37, 4F

07/31 16:38, , 5F
python 算我第一個碰的語言..所以很多東西真的完全不知道
07/31 16:38, 5F

07/31 16:40, , 6F
怎用...像連一樓寫給我的式子..我也是這兩天第一次見到
07/31 16:40, 6F

07/31 16:42, , 7F
我的參考書think python的list章節沒出現過==||
07/31 16:42, 7F

07/31 16:43, , 8F
真的很不好意思<(_ _)>
07/31 16:43, 8F

07/31 17:30, , 9F
新手不要用那種寫法,用最通用的寫法就好了
07/31 17:30, 9F

07/31 17:34, , 10F
s = [10.0, 31.0, 25.0, 77.0, 66.0]
07/31 17:34, 10F

07/31 17:34, , 11F
t = [7.0, 42.0, 45.0, 49.0, 60.0]
07/31 17:34, 11F

07/31 17:34, , 12F
u = [None, None, None, None, None]
07/31 17:34, 12F

07/31 17:34, , 13F
for i in range(len(s)):
07/31 17:34, 13F

07/31 17:34, , 14F
if s[i] < t[i]:
07/31 17:34, 14F

07/31 17:34, , 15F
u[i] = s[i]
07/31 17:34, 15F

07/31 17:34, , 16F
else:
07/31 17:34, 16F

07/31 17:35, , 17F
u[i] = t[i]
07/31 17:35, 17F

07/31 17:36, , 18F
一樓那種寫法等寫久了自然就會去用了,又快又方便
07/31 17:36, 18F

07/31 18:07, , 19F
那寫C就好了
07/31 18:07, 19F

07/31 19:24, , 20F
一樓不要這麼兇~ 每個人總有剛開始學的時候^^
07/31 19:24, 20F

07/31 19:25, , 21F
我建意原 PO 問問題時講一下你曾做過的嘗試
07/31 19:25, 21F

07/31 19:25, , 22F
不要讓人覺得你是什麼都沒想過就來求答案
07/31 19:25, 22F

07/31 19:39, , 23F
list(map(min, s, t)) 這樣有沒有比較直覺一點?
07/31 19:39, 23F

07/31 19:59, , 24F
很好,只要搞懂這些函式即可,沒有還沒學到這語法的問題
07/31 19:59, 24F

07/31 20:47, , 25F
os563 講得很好阿,先用直覺的方式寫~
07/31 20:47, 25F

07/31 23:40, , 26F
推os563
07/31 23:40, 26F

07/31 23:44, , 27F
我同意一開始可以寫直覺的程式, 但是不同意「寫久了自然
07/31 23:44, 27F

07/31 23:46, , 28F
就會去用」這部分; 必須要有人對他解釋其實原本的寫法在
07/31 23:46, 28F

07/31 23:47, , 29F
的問題是什麼
07/31 23:47, 29F

08/01 01:35, , 30F
u = [min(s[i], t[i]) for i in range(len(s))]
08/01 01:35, 30F

08/01 01:36, , 31F
我發現我的第一感好像跟上面的各位很不一樣......
08/01 01:36, 31F

08/01 01:36, , 32F
有大大可以點評一下大家的第一感的優劣之處嗎?
08/01 01:36, 32F

08/01 01:37, , 33F
個人覺得mikapauli的"list(map(min, s, t))"是目前最優
08/01 01:37, 33F

08/01 01:39, , 34F
除了簡潔(不熟map就不直覺XD)外,我猜執行效率是最優的
08/01 01:39, 34F

08/01 01:42, , 35F
看了下mikapauli大在原PO上一篇的推文自以為效率也很高
08/01 01:42, 35F

08/01 02:24, , 36F
S兄寫法在 s 比較長時會得不到值
08/01 02:24, 36F

08/01 02:27, , 37F
m兄的寫法可讀性最優,效率跟我的寫法應該差不多
08/01 02:27, 37F

08/01 11:55, , 38F
FP 寫久會比較習慣 mikapauli 的作法
08/01 11:55, 38F

08/07 15:06, , 39F
Merge Sort的改版。
08/07 15:06, 39F
文章代碼(AID): #1H-CI5Vj (Python)
討論串 (同標題文章)
文章代碼(AID): #1H-CI5Vj (Python)