python 学习日记(四)

for 循环使用时的注意点

 1 def getinfo(line,name_list):
 2    # new_list = []
 3     name_list = line.split(",",9)
 4     for each in name_list:
 5         name_list.append(each)              
 7     return name_list
 9 a = []
10 
11 line = 'a,b,g,c,e,f,t,y'
12 print(getinfo(line,a))

在循环中直接对name_list赋值操作会失败,返回值是一个空值。同样的如果对each操作对name_list也不会有影响

 1 def getinfo(line,name_list):
 2     
 3     name_list = line.split(",",9)
 4     for each in name_list:
 5         each = each + " king "
 6                
 7     return name_list
 8 
 9 a = []
10 
11 line = 'a,b,g,c,e,f,t,y'
12 print(getinfo(line,a))

打印结果为:['a', 'b', 'g', 'c', 'e', 'f', 't', 'y']

这个有点像java中的Iterator迭代

需要另外声明一个变量返回:

 1 def getinfo(line,name_list):
 2     new_list = []
 3     name_list = line.split(",",9)
 4     for each in name_list:
 5         new_list.append(each + " king ")
 6                
 7     return new_list
 8 
 9 a = []
10 
11 line = 'a,b,g,c,e,f,t,y'
12 print(getinfo(line,a))

结果:

['a king ', 'b king ', 'g king ', 'c king ', 'e king ', 'f king ', 't king ', 'y king ']

 对于需要对list中的成员做操作这种事,python还提供了一个很方便的方法

clean_mikey = [sanitize(each_t) for each_t in mikey]

 1 def sanitize(time_string):
 2     if ":" in time_string:
 3         spliting = ":"
 4     elif "-" in time_string :
 5         spliting = "-"
 6     else :
 7         return time_string
 8     (mins,second) = time_string.split(spliting)
 9     return (mins + "." + second)
10 

14 with open('c:/Python33/source/james.txt') as info1:
15     data = info1.readline().strip().split(",")
16     james = sorted([sanitize(each) for each in data])
17     unique_james = []
18     for each in james:
19         if each not in unique_james:
20             unique_james.append(each)
21     print(unique_james[0:3])  

在python中的list comprehensions中是没有出去list中的相同元素的功能的,需要自己建立一个循环来实现这个功能

这是也可以借助python中的集合来实现取出重复元素的功能

set(list)

 

python 集成了很多便的功能

 

posted @ 2013-05-13 00:52  拙急鸟  阅读(175)  评论(0编辑  收藏  举报