Python的数据类型:
布尔,字符,数字,元组—>他们的值不能发生变化,所以不能进行++或--的操作,若发生了改变,是地址变了
列表,集合,字典,类 —>值可以发生变化。
举例说明:
1.数字
a=5
a=a+1
b=5
print(id(a))
print(id(b))
2.1字符
vstr1='hello'
print(id(vstr1))
vstr1=vstr1*2
print(id(vstr1)) ![](https://i-blog.csdnimg.cn/blog_migrate/53103e9c0f04cadd3282c5ec22cc61f1.png)
2.2字符(三个双引号或者三个单引号,都会保留文档的格式)
vstr1="""python
klagl
dljfld
dslkdaj"""
print(vstr1)
2.3字符串(按下标范围进行输出)
[] : 下标从零开始,表示第一个字母;(ps:空格也算一个字符)
[0:4] : 下标从零开始到下标为4(不包含下标4)结束 。 与 [:5] 表示的意思一样
[6:] : 表示从下标为6的字符开始,一直到最后
[len(strl)-3] : len(strl)减几,就从整个字符串的倒数第几个字符开始,一直到最后
[-3:] : 与[len(strl)-3]表示的意思一样
[-4:-2] : 表示从整个字符串倒数第4个字符,到倒数第2个字符(不包含)结束
str1='hello world' s=str1[0]
print(s)#[0]、[0:4]、[6:]、[:5]、[len(str1)-3:]、[-3:]、[-4:-2]
也可以使用for循环:
for s in str1[-5:]: print(s)
3.1元组3.2元组(后面加上‘ *3’ ,表示ar元组的个数等于元素个数乘以3,切一个元组中的元素每个元素出现三次)ar=(1,'a',3,4) for i in ar: print(ar)
ar=(1,'a',3,4)*3 for i in ar: print(ar)
3.3元组([]截取字符串)
ar=(1,2,3,4,5,6,7,8) ar=ar[2:5] print(ar)
4.列表(推到算法)5. 两个**为次幂,两个//为取整数,一个/为无论是否能够整除都是小数la1=[1,2,3] la2=[4,5,6] #rs=[x*y for x in la1 for y in la2] rs=[[x,y,x*y] for x in la1 for y in la2] print(rs)
6.divmod() : 表示第一个数除以第二个数,得到的值是一个元组,元组的第一个值是商,第二个值是余数a=5 a=a**3 b=5 b=b//2 b=b/2 print(a) print(b)
c=divmod(7,2) print(c)
7.集合与迭代器合用:无序不可重复, 与元组和列表不同,元组和列表可以储存重复数据并记录其顺序比较1:
比较2:#元组定义 yz=(2,2,2,3,4) #获取迭代器 ii=iter(yz) print (next(ii)) //next()输出下一个
比较3:#列表定义 ar=[2,2,2,3,4] #获取迭代器 ari=iter(ar) for i in ari: print(i)
#集合定义 set1={2,2,2,3,4} #set1.pop() #默认删除最后一个 # #获取迭代器 it=iter(set1) print(next(it)) print(next(it)) print(next(it)) #最后输出结果为 2 3 4
8.1定义字典可以使用[] 以键找值,也可以使用get()方法 一键找值,get()方法还可以添加默认值
dl={'cn':'中国','en':'英国','us':'美国'} print('us --> ',dl['us']) print('cn --> ',dl.get('cn')) print('no fr --> ',dl.get('fr','字典中没有,你是不是要取法国'))
8.2删除字典的两种方法,,且,删除前后字典地址不会发生变化
dl={'cn':'中国','en':'英国','us':'美国'} print(id(dl))#打印地址 #两种删除方法 del dl['us'] dl.pop('en') print(len(dl)) print(id(dl))
9.字典的综合案例要求:统计控制台输入的字符串中每一个字符出现的次数。
第一种方法:按key 进行排序
zf=input('输入字符串\n') tongji={} for s in zf: if s in tongji: tongji[s]=tongji[s]+1 #abc bd abc.cac 第2个b已经在tongji字典中出现过一次,所以第2个b要加1 else: tongji[s]=1 #第1次出现的d不存在于tongji字典中,所以d出现1次 for key in sorted(tongji): #排序sorted() print(key,'共出现',tongji[key],'次')
第二种方法:按value值进行排序,使用lambda进行遍历key=lambda item:item[i] 其中item是iter()迭代器的返回值 ,key是sorted()函数中的关键字
如:it=iter(tongji)
print(next(it)) next()的返回值为item
items()函数以列表 返回可遍历的(键,值)元组数据
print (tongji.items())
zf=input('输入字符串\n') tongji={} for s in zf: if s in tongji: tongji[s]=tongji[s]+1 else: tongji[s]=1 #iter();生成键值为元组的一组数 for value in sorted(tongji.items(),key=lambda item : item[1]): print(value[0],'共出现',value[1],'次')
第三种方法:按value值进行排序,使用lambda进行遍历,reverse的默认值为False,正序排列zf=input('输入字符串\n') tongji={} for s in zf: if s in tongji: tongji[s]=tongji[s]+1 else: tongji[s]=1 for key in sorted(tongji.items(),key=lambda item : item[1],reverse=True): print(key[0],'共出现',key[1],'次')
第四种方法:items()方法,,返回 列表里面套元组模式,如:[(),(),()...]zf=input('输入字符串\n') tongji={} for s in zf: if s in tongji: tongji[s]=tongji[s]+1 else: tongji[s]=1 for key1 in sorted(tongji.items(),key=lambda x:x[0],reverse=True):#lambda后面的 x 代表列表里面每一个元组, 冒号后面的x[0]表示元组中key,如果是x[1]位value print(key1[0],'共出现',key1[1],'次')
python中动态传参:
def sum(*args): sum=0 for n in args: sum+=n return sum print(sum(1,2,3,4))
def sum(*args): sum=''; for n in args: sum=sum+str(n) return sum print(sum(1,2,'hi',4))
#end='<>'或 end=' '都表示不换行,end='\n'表示换行例如:
print('你好hello python3.6',end='<>') print('你好hello python3.6',end='\n') print('你好hello python3.6',end=' ')