学习python第二天

北京时间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 dict
	
	print dict.pop('wangwu')   #删除指定元素并返回其值
	print dict
	
	for k in dict:                #字典的遍历
		print "dict[%s]="%k,dict[k]
		
	dict.clear()              #删除字典中的所有键值对
	print dict
	
if __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 则返回True
	print ('Zhangsan' in dict) 		#not in 则返回False
	
	#通过 get 判断 Key 是否存在
	print dict.get('zhangsan')      #in 则返回 1
	print dict.get('zz')			#not in 则返回 None
	print 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 b
	
	b.add(6)     #向集合中添加元素
	print b
	b.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 a
	
	a = 'abc'           #对不可变对象(字符串)进行操作,内容不会改变
	print a.replace('a','A')
	print a
<pre name="code" class="python">if __name__=="__main__":
	main()

 运算符与算术表达式: 

+,-,*,/,

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

#-*-coding:utf-8-*-
def main():
	x = 4
	y = 3
	print 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+...+100
	sum = 0
	num = range(101)
	for x in num:
		sum = sum + x
	print sum
	
	#用while循环计算1+3+5...+99
	sum = 0
	num = 99
	while num > 0:
		sum = sum + num
		num = num -2
	print sum
	
if __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中的throw
	elif x >= 0:
		return x
	else:
		return -x

def 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,不传入时就为2
	s = 1
	while n > 0:
		s = s * x
		n = n - 1
	return s	
def enroll(name, gender, age=6, city='beijing'):  #招生的一个函数
	print 'name is ', name
	print 'gender is ', gender
	print 'age is ', age
	print 'city is ', city
	
def 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 = 0
	for n in numbers:
		sum = sum + n*n
	return 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):                #函数除了必选参数外,还接受关键字参数kw
	print 'name:',name,'age:',age,'other:',kw
	
def main():
	person('zhangsan',30)                 #只传入必选参数
	person('lisi',30,city='beijing')      #传入一个含参数名的关键字参数
	person('wangwu',28,gender='male',job='engineer')    #传入两个含参数名的关键字参数
	#关键词参数在函数内部自动组装成为一个dict
if __name__=="__main__":
	main()
在python中定义函数,可以用必选参数,默认参数,可变参数和关键字参数。这四种参数可以一起使用。但是请注意,参数定义的顺序必须是: 必选参数,默认参数,可变参数和关键字参数。


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

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







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值