python中比较喜欢用in这个操作,
1. 在 for 循环遍历 LIst L 时,for name in L
2. 在访问dict r 时,可以先判断值是否在 r 中,if 'nana' in r , 其中‘nana’ 是 r 中存储的某个 key 值,r[key] 是其对应的 value 值。
3. 遍历dict r 时,for key in d:
4. 访问set时,'paul' in s , 如果 set s 中有paul,返回true,否则返回false。注意set 中元素区分大小写。
print 输出多个值的方法:
如下,输出多个值时,对于想直接输出的字符串,用 '' 括起来,两个值之间用逗号,分隔。
d = {
'Adam': 95,
'Lisa': 85,
'Bart': 59
}
print 'Adam:',d.get('Adam')
print 'Lisa:',d.get('Lisa')
print 'Bart:',d.get('Bart')
dict 的三个特性:1. key 值不可重复;
2. dict 的数据是无序存储的,list 和 tuple 的数据是有序存储的;
3. dict 的 key 是不可变类型的,即int,string,float类型都行,但list作为key值是不可以的。
a = (1,2,3) // a是tuple,其值不可变
b = [1,2,3] // b是list,其值可变,可以用 append(p) 在 list 末尾加元素p,或者 insert(2,p) 在指定位置 list[2] 加元素p,可以用 pop() 删除末尾元素,或者可以用 pop(i) 删除 List[i] 元素
s = set([1,2,3]) // s 是set,set 是无序存储不重复的数据,可以传入一个list值给set,然后set过滤掉重复元素。
注意:tuple,list是有序存储的,所以可以根据索引访问数据,而set 是无序存储的,不能根据索引访问,只能判断某个值在不在 set 中。set 和dict 的 key 很像,dict 的 key具有的特性,set 都有。
s.add(4) // set s中增加元素4
s.remove(4) // set s中删除元素4
Python的 for 循环就可以依次把list或tuple的每个元素迭代出来;
和 for 循环不同的另一种循环是 while 循环,while 循环不会迭代 list 或 tuple 的元素,而是根据表达式判断循环是否结束。
python中遍历 list 和 tuple 用for循环,格式如下:for x in args:然后对x进行处理,就是对args中的元素进行处理。tuple和list的长度,使用 len(args)判断。当然,python和go语言的语法很相似,也可以用slice来对list和tuple进行取值。range()函数可以创建一个数列,如:range(1, 101),则表示的是[1, 2, 3, ..., 100]
slice切片说明:
print L[:10] //输出下标为0-9的数据,即前10个数 print L[2::3] //从下标为2的开始,置list结束,每3个元素输出一个 print L[4:50:5] //从下标为4的开始,置下标为49的前50个数,每5个元素输出一个
索引迭代:
python中对list和tuple的索引迭代,引入了enumerate(),该函数将list和tuple中的每个元素组装成包含索引项和其值tuple,然后输出:
for t in enumerate(L):
index = t[0]
name = t[1]
print index, name
由上述更明确可知,enumerate()对list和tuple的索引迭代,是转换成tuple[(0, 'Adam'), (1, 'Lisa'), (2, 'Bart'), (3, 'Paul')] 进行处理的,因此,可以将索引迭代的代码精简为如下:
for index,name in enumerate(L):
print index,name
dict 对value值的迭代,有两种方法:values() 和 itervalues()
那这两个方法有何不同之处呢?
1. values() 方法实际上把一个 dict 转换成了包含 value 的list。
2. 但是 itervalues() 方法不会转换,它会在迭代过程中依次从 dict 中取出 value,所以 itervalues() 方法比 values() 方法节省了生成 list 所需的内存。
for v in d.itervalues():
print v //即打印输出dict的value值。
3. 打印 itervalues() 发现它返回一个 <dictionary-valueiterator> 对象,这说明在Python中,for 循环可作用的迭代对象远不止 list,tuple,str,unicode,dict等,任何可迭代对象都可以作用于for循环,而内部如何迭代我们通常并不用关心。
如果一个对象说自己可迭代,那我们就直接用 for 循环去迭代它,可见,迭代是一种抽象的数据操作,它不对迭代对象内部的数据有任何要求。
迭代dict的key和value
dict的items()方法可以将dict的元素转换成一个包含tuple的list,然后在输出;和values()跟itervalues()类似,items()也有相应的iteritems(),iteritems() 不把dict转换成list,而是在迭代过程中不断给出 tuple,所以, iteritems() 不占用额外的内存。
使用范例:
for key,value in d.iteritems():
print key, ' : ', value
列表生成式
python的列表生成利用,range()
范例1:range(1,11),生成的列表是[1,2,3,...,10]
范例2:
L = []
for x in range(1,11)
L.append(x*x)
,生成的列表L是[1,4,9,16,...,100]
注:范例2可以利用列表生成式生成L,此方法还简单,如下:
[x*x for x in range(1,11)],该方式生成的列表也是 [1,4,9,16,...,100]。总结方法为:将要生成的元素x*x 写在最前边,后边跟for即可。
范例3:
输出[1*2,3*4,5*6,...99*100]
print [x*(x+1) for x in range(1,100,2)] ,
注:range(1,100,2) 生成的列表是[1,3,5,7,...]
范例4:
在范例2基础上的操作,可以在列表生成式之后的 for 循环后加 if 条件判断,比如只要偶数的平方:
[x*x for x in range(1,11) if x % 2 == 0]
有了 if 条件,只有 if 判断为 true 的时候,才把循环的当前元素加入列表。