python 学习笔记整理

来源:互联网 发布:宝马编程是什么意思 编辑:程序博客网 时间:2024/06/05 03:20

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 的时候,才把循环的当前元素加入列表。

0 0
原创粉丝点击