北京时间2015年1月28日9点44分。python第二天。启东今天很冷,一个人躲在家里开着取暖器,学学东西写写博客也不错。
废话不多说。昨天学习了一些python的一些基础知识,并主要学习了python的两种基本的数据类型(列表和元组)。下面我们来学习另外两种python的数据类型(字典和集合)
字典:dict
python内置了字典,在其他语言中称为map,使用键值存储,具有极快的查找速度。
定义方式: dictionary={key:value} #当有多个键值时,用逗号进行分割
#-*-coding:utf-8-*-关于dict还要一些需要注意的:
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()
#-*-coding:utf-8-*-dict可以用在需要高速查找的很多地方,在python代码中几乎无处不在,正确使用dict非常的重要,需要牢记 dict的key必须是不可变对象
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()
集合: 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-*-空函数 :pass. pass语句什么都不做,只是用来作为占位符
def main():
a = abs #变量a指向abs函数
print a(-3) #所以也可以通过a调用abs函数
if __name__=="__main__":
main()
下面我们来定义一个函数来求输入参数的绝对值:
#-*-coding:utf-8-*-函数可以返回多个值吗?可以,但是事实上这只是一种假象,函数返回的依然是单一值,但这个单一值可以是一个tuple.此处就不举例了。
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()
有些时候我们定义函数的同时需要为其设定默认参数:
#-*-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-*-关键字参数允许你传入0个或者任意个含参数名的参数。 这些关键字参数在函数内部自动组装成为一个dict,当然也可以先组装出一个dict,再将其转化为关键字参数传进去
"""
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()
#-*-coding:utf-8-*-在python中定义函数,可以用必选参数,默认参数,可变参数和关键字参数。这四种参数可以一起使用。但是请注意,参数定义的顺序必须是: 必选参数,默认参数,可变参数和关键字参数。
"""
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()
ok,Python第二天的内容就是这么多,继续努力啊少年。
如果你觉得自己行的话,那么就要让所有人都看到。