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 集成了很多便的功能