学习python第二天

时间:2021-08-07 20:54:39

北京时间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第二天的内容就是这么多,继续努力啊少年。

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