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)
|