学习python第二天

来源:互联网 发布:csgo优化脚本 编辑:程序博客网 时间:2024/05/16 11:16

北京时间2015年1月28日9点44分。python第二天。启东今天很冷,一个人躲在家里开着取暖器,学学东西写写博客也不错。

废话不多说。昨天学习了一些python的一些基础知识,并主要学习了python的两种基本的数据类型(列表和元组)。下面我们来学习另外两种python的数据类型(字典和集合)

字典:dict

python内置了字典,在其他语言中称为map,使用键值存储,具有极快的查找速度

定义方式: dictionary={key:value}   #当有多个键值时,用逗号进行分割

#-*-coding:utf-8-*-def main():dict = {'zhangsan':1, 'lisi':2, 'wangwu':3, 'jack':4}print dict                #print出来的结果是没有顺序的print dict['lisi']        #结果应该是2"""字典的添加,删除,修改"""dict['rose']=5      #添加del(dict['zhangsan']) #删除dict['lisi']=1 #修改print dictprint dict.pop('wangwu')   #删除指定元素并返回其值print dictfor k in dict:                #字典的遍历print "dict[%s]="%k,dict[k]dict.clear()              #删除字典中的所有键值对print dictif __name__=="__main__":main()
关于dict还要一些需要注意的:

#-*-coding:utf-8-*-def main():dict = {'zhangsan':1, 'lisi':2, 'wangwu':3, 'jack':4}#通过 in 判断 key 是否存在print ('zhangsan' in dict)      #in 则返回Trueprint ('Zhangsan' in dict) #not in 则返回False#通过 get 判断 Key 是否存在print dict.get('zhangsan')      #in 则返回 1print dict.get('zz')#not in 则返回 Noneprint dict.get('zz', -1)#key不存在时也可以自己指定返回值if __name__=="__main__":main()
dict可以用在需要高速查找的很多地方,在python代码中几乎无处不在,正确使用dict非常的重要,需要牢记dict的key必须是不可变对象


集合: set

set和dict一样,也是一组key的集合,但不存储value,由于key不能重复,所以,在set中,没有重复的key,重复元素在set中自动被过滤:

要创建一个set,需要提供一个list作为输入集合

#-*-coding:utf-8-*-def main():a=[1,2,3,4,5]b=set(a)print bb.add(6)     #向集合中添加元素print bb.remove(4)  #删除集合中的元素print b#如何用set来找到两个list中相同的元素a=["11","22","33"]b=["11","33","55"]c=set(a)&set(b)print c#是不是很好用啊,哈哈哈if __name__=="__main__":main()


不可变对象:

对于可变对象,比如list,对list进行操作,list内部的内容是会发生变化的,而对于不可变对象呢?比如str?我们来看下面的代码:

#-*-coding:utf-8-*-def main():a = ['c','b','a']   #对可变对象进行操作,内容是会变化的a.sort()print aa = 'abc'           #对不可变对象(字符串)进行操作,内容不会改变print a.replace('a','A')print a
<pre name="code" class="python">if __name__=="__main__":main()

运算符与算术表达式:

+,-,*,/,

%(求余数),  **(求幂),  //(取整数)

#-*-coding:utf-8-*-def main():x = 4y = 3print y**x   #求幂,3的4次方print x%y    #求余数print x//y   #取整除print x/y    #普通除if __name__=="__main__":main()


赋值运算符与赋值表达式:=,  +=都支持

逻辑运算符: and  or  not. 注意:在python中参与逻辑运算的不限于布尔类型,任何类型的值都可以参与到逻辑运算中。

关系运算符与关系表达式: ==,   !=,  >,  <,  >=, <=,


流程控制:

条件语句if, elif, else:

循环语句for...in...;   while...

<span style="font-size:14px;">#-*-coding:utf-8-*-"""day02_06"""def main():#我们用raw_input()输入数字,但是raw_input()读取的内容永远以字符串的形式返回,所以我们要先对其强制转换age = int(raw_input('your age is: ')  )if age >= 18:print 'your age is', age, ', you are an adult'elif age >=6:print 'your age is', age, ', you are a teenager'else:print 'your age is', age, ', you are a kid'#用for循环计算1+2+...+100sum = 0num = range(101)for x in num:sum = sum + xprint sum#用while循环计算1+3+5...+99sum = 0num = 99while num > 0:sum = sum + numnum = num -2print sumif __name__=="__main__":main()</span>


函数:

首先我们来看一下python内置的一些函数:http://docs.python.org/2/library/functions.html

对于函数来说,函数名其实就是指向一个函数对象的引用,完全可以把函数名赋给另一个变量,相当于给这个函数起了一个”别名“:

#-*-coding:utf-8-*-def main():a = abs     #变量a指向abs函数            print a(-3) #所以也可以通过a调用abs函数if __name__=="__main__":main()
空函数  :pass. pass语句什么都不做,只是用来作为占位符

下面我们来定义一个函数来求输入参数的绝对值:

#-*-coding:utf-8-*-def my_abs(x):if not isinstance(x,(int,float)):        #isinstance完成数据类型的检查raise TypeError('bad operand type')  #出错就返回错误信息,raise类似于java中的throwelif x >= 0:return xelse:return -xdef main():print my_abs(10)print my_abs(-10)print my_abs('c')if __name__=="__main__":main()
函数可以返回多个值吗?可以,但是事实上这只是一种假象,函数返回的依然是单一值,但这个单一值可以是一个tuple.此处就不举例了。

有些时候我们定义函数的同时需要为其设定默认参数:

#-*-coding:utf-8-*-def pow(x,n=2):     #默认参数为2,不传入时就为2s = 1while n > 0:s = s * xn = n - 1return sdef enroll(name, gender, age=6, city='beijing'):  #招生的一个函数print 'name is ', nameprint 'gender is ', genderprint 'age is ', ageprint 'city is ', citydef main():print pow(3)print pow(3,4)enroll('zhangsan','male')enroll('lisi','female',7)enroll('wangwu','male',city='Tianjin') #如果不按顺序传入默认参数的话,需要把参数名称写上if __name__=="__main__":main()

在Python中,还可以定义可变参数,顾名思义,可变参数就是传入的参数个数是可变的:

#-*-coding:utf-8-*-"""day02_10"""def calc(*numbers):     #计算传入参数的平方和sum = 0for n in numbers:sum = sum + n*nreturn sum  def main():print calc(1,3,5,7)lis=[1,3,5,7]print calc(*lis)     #python支持把list与tuple的元素变成可变参数传进去tup=(1,3,5,7)print calc(*tup)if __name__=="__main__":main()
关键字参数允许你传入0个或者任意个含参数名的参数。这些关键字参数在函数内部自动组装成为一个dict,当然也可以先组装出一个dict,再将其转化为关键字参数传进去

#-*-coding:utf-8-*-"""day02_11""" def person(name, age, **kw):                #函数除了必选参数外,还接受关键字参数kwprint 'name:',name,'age:',age,'other:',kwdef main():person('zhangsan',30)                 #只传入必选参数person('lisi',30,city='beijing')      #传入一个含参数名的关键字参数person('wangwu',28,gender='male',job='engineer')    #传入两个含参数名的关键字参数#关键词参数在函数内部自动组装成为一个dictif __name__=="__main__":main()
在python中定义函数,可以用必选参数,默认参数,可变参数和关键字参数。这四种参数可以一起使用。但是请注意,参数定义的顺序必须是:必选参数,默认参数,可变参数和关键字参数。


ok,Python第二天的内容就是这么多,继续努力啊少年。

如果你觉得自己行的话,那么就要让所有人都看到。







0 0