
1 kidblg 2011-07-11 15:44:46 +08:00 list貌似没有这样的方法。 一个猥琐的方法是: s1 = "a" s2 = 10 a = [s2 if s == s1 else s for s in a] |
2 bcxx 2011-07-11 16:11:16 +08:00 就用 for 循环逐个改好了,反正也是 O(n) 坐等更加 geek 的方法…… |
3 Weakdancer 2011-07-11 16:13:02 +08:00 直接这样: for i in a: ++++if i=="a": ++++++++a[a.index("a")]=10 一般情况下,我使用楼上的写法,更简洁,但是好像低版本的python不支持。 |
4 raptium 2011-07-11 16:37:18 +08:00 b = map(lambda x:10 if x == 'a' else x, a) 不过这样得到的是个新的 就不是替换了~~ |
5 ccp0101 2011-07-11 17:05:02 +08:00 a_list = ["a", "b", "c", "a", "b", "c"] for (i, item) in enumerate(a_list): if item == "a": a_list[i] = 10 print a_list # [10, 'b', 'c', 10, 'b', 'c'] |
7 felinx 2011-07-11 17:46:12 +08:00 再精简一下好了,就一行,a = ["10" if s == "a" else s for s in a] |
8 CoX 2011-07-11 17:48:20 +08:00 一行:[(s,10)[s=='a'] for s in a] |
9 CoX 2011-07-11 17:50:30 +08:00 [(s,10)[s is 'a'] for s in a] |
12 est 2011-08-10 15:19:30 +08:00 |
15 lin OP |
16 kuno 2011-08-10 17:29:57 +08:00 @lin 你弟弟的开发方法有问题。 这样的问题通常python coder会开一个python shell, 在里面实验各种可能的方案,然后选择一个最优的。 这可能也是python这样的动态语言最大的优势了。 |
17 lin OP @kuno 我不太明白,这条问题是我在他知乎上转的 http://www.zhihu.com/question/19761639 他一般用IDLE直接写然后运行或者写成py文件进行测试。 很多时候他想到一个问题但是不知道用怎样的逻辑(是不是应该叫算法)去解决,通常是一些数学问题但是这些问题在他平常的学习范围之外,有些概念我都没听过(可能以前学过但忘了),他下学期上初三。 |
18 lin OP 另外,感谢以前V2EX大家推荐的书。 |
20 kuno 2011-08-11 13:52:13 +08:00 你弟弟目前最重要的是学好数学啊,至于我说的都是具体的开发方法论的范畴,而且只是经验之谈。 看起来不适合你弟弟目前的情况。 --祝好 |
21 lanisle 2011-08-11 15:29:06 +08:00 第一个感觉LZ的弟弟就是他自己。。。 |
22 lin OP 果断地用了两次“屏蔽此人” |
23 noproblem 2011-08-11 21:24:31 +08:00 @lin 鉴于令弟的年纪唠叨两句: 从编程入门的角度来说,python 真的不太合适 python确实很酷,但上来就用这种语言的话 会阻碍编程基础能力的锻炼 初学者应当使用没有高级数据结构的命令式程序设计语言 c是可以接受的(且在国内已被广范接受),pascal更是不辱使命(当初的设计目的就是教学) |
25 bhuztez 2011-08-11 22:32:17 +08:00 @noproblem ,我模仿你一下 从编程入门的角度来说,C 真的不太合适 C 确实很酷,但上来就用这种语言的话 会阻碍编程基础能力的锻炼 初学者应当使用没有高级控制结构的贴近机器的底层语言 汇编是可以接受的,直接写机器码更好 |
28 coderx 2011-08-12 13:32:28 +08:00 map(lambda x: x == 'a' and 10 or x, a) |