作者nissekl (METALLICA-JAMES)
看板Python
標題[問題] 如何比較list裡面各項數字的大小並重組?
時間Wed Jul 31 16:02:10 2013
不好意思小弟不材又要來打擾各位神手大大了
因為最近一直在用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
1F:→ sbrhsieh:感覺你都沒有認真去想。 07/31 16:10
2F:→ sbrhsieh:u=[a if a < b else b for a, b in zip(s, t)] 07/31 16:11
3F:→ nissekl:非常感謝你....因為我開始碰python不到兩週.我會的東西 07/31 16:36
4F:→ nissekl:真的很少...加上我先前真的沒學過什麼程式語言... 07/31 16:37
5F:→ nissekl:python 算我第一個碰的語言..所以很多東西真的完全不知道 07/31 16:38
6F:→ nissekl:怎用...像連一樓寫給我的式子..我也是這兩天第一次見到 07/31 16:40
7F:→ nissekl:我的參考書think python的list章節沒出現過==|| 07/31 16:42
8F:→ nissekl:真的很不好意思<(_ _)> 07/31 16:43
9F:→ os653:新手不要用那種寫法,用最通用的寫法就好了 07/31 17:30
10F:→ os653:s = [10.0, 31.0, 25.0, 77.0, 66.0] 07/31 17:34
11F:→ os653:t = [7.0, 42.0, 45.0, 49.0, 60.0] 07/31 17:34
12F:→ os653:u = [None, None, None, None, None] 07/31 17:34
13F:→ os653:for i in range(len(s)): 07/31 17:34
14F:→ os653: if s[i] < t[i]: 07/31 17:34
15F:→ os653: u[i] = s[i] 07/31 17:34
16F:→ os653: else: 07/31 17:34
17F:→ os653: u[i] = t[i] 07/31 17:35
18F:→ os653:一樓那種寫法等寫久了自然就會去用了,又快又方便 07/31 17:36
19F:→ sbrhsieh:那寫C就好了 07/31 18:07
20F:→ darkgerm:一樓不要這麼兇~ 每個人總有剛開始學的時候^^ 07/31 19:24
21F:→ darkgerm:我建意原 PO 問問題時講一下你曾做過的嘗試 07/31 19:25
22F:→ darkgerm:不要讓人覺得你是什麼都沒想過就來求答案 07/31 19:25
23F:→ mikapauli:list(map(min, s, t)) 這樣有沒有比較直覺一點? 07/31 19:39
24F:→ sbrhsieh:很好,只要搞懂這些函式即可,沒有還沒學到這語法的問題 07/31 19:59
25F:推 timTan:os563 講得很好阿,先用直覺的方式寫~ 07/31 20:47
26F:推 carlcarl:推os563 07/31 23:40
27F:→ uranusjr:我同意一開始可以寫直覺的程式, 但是不同意「寫久了自然 07/31 23:44
28F:→ uranusjr:就會去用」這部分; 必須要有人對他解釋其實原本的寫法在 07/31 23:46
29F:→ uranusjr:的問題是什麼 07/31 23:47
30F:→ SocketAM2:u = [min(s[i], t[i]) for i in range(len(s))] 08/01 01:35
31F:→ SocketAM2:我發現我的第一感好像跟上面的各位很不一樣...... 08/01 01:36
32F:→ SocketAM2:有大大可以點評一下大家的第一感的優劣之處嗎? 08/01 01:36
33F:→ SocketAM2:個人覺得mikapauli的"list(map(min, s, t))"是目前最優 08/01 01:37
34F:→ SocketAM2:除了簡潔(不熟map就不直覺XD)外,我猜執行效率是最優的 08/01 01:39
35F:→ SocketAM2:看了下mikapauli大在原PO上一篇的推文自以為效率也很高 08/01 01:42
36F:→ sbrhsieh:S兄寫法在 s 比較長時會得不到值 08/01 02:24
37F:→ sbrhsieh:m兄的寫法可讀性最優,效率跟我的寫法應該差不多 08/01 02:27
38F:→ drm343:FP 寫久會比較習慣 mikapauli 的作法 08/01 11:55
39F:推 starengine:Merge Sort的改版。 08/07 15:06