作者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