python基础二(list,tuple元祖、dic字典,字符串)

时间:2023-03-10 03:50:18
python基础二(list,tuple元祖、dic字典,字符串)

一、列表list

1、list定义

列表即数组 ,list或array.。列表中的每个元素都有自己的编号,从0开始,编号也可叫做下标,角标,索引。最后一个元素的下标也可用-1表示.:

list定义时,需要用中括号[]括起来元素,每个元素之间用逗号分隔开。示例:stus=[‘小白’,'小红,‘小明’,'小兰']  元素如果是字符串需要用引号括起来

2、list操作

增:

stus.append('北京')  #在列表末尾增加一个元素
stus.insert(0,'上海') #在指定的位置增加元素
stus.extend(list1)#将list1合并到stus中
stus+list1 #合并list1和stus

删:

stus.pop(0) #删除指定位置的元素
stus.remove('北京') #删除指定的元素
del stus[2] #删除指定位置元素
stus.clear()#清空list

改:

stus[1]='深圳'# 修改指定位置的元素,但是如果下标不存在,则会报错

查:

print(stus[1])#获取指定位置的元素,并打印出来
print(stus.index('北京'))#获取元素对应的下标,如果元素不存在,下标找不到,会报错
print()stus.count('深圳'))#获取元素在list中出现的次数

list反转:

my_list = ['python','jmeter','charles','postman']
my_list.reverse() #就是把这个list反转一下,并不会返回任何内容。如果你直接打印会发现,结果显示none : print(my_list.reverse())
print(my_list)#显示翻转后的list python基础二(list,tuple元祖、dic字典,字符串)
 

list排序:

可对数值型元素排序也可对字符串型元素排序,默认按升序排序。如果加上参数reverse=True,则按照降序排序

python基础二(list,tuple元祖、dic字典,字符串)

list合并:

list的合并,只需要多个list用加号+链接即可

nums1 = [9,2,34,12,34,457,2342]
nums = ['b','f','e','z','g','h']
print(nums1+nums2)#结果就是两个list合并后[9,2,34,12,34,457,2342,'b','f','e','z','g','h']

如果同一个list中的内容,复制合并,则直接用原来的list*n(n表示次数):

print(nums1*3),则输出:[9, 2, 34, 12, 34, 457, 2342, 9, 2, 34, 12, 34, 457, 2342, 9, 2, 34, 12, 34, 457, 2342],把原来的nums1重复3次后输出,

字符串也可以这样用:print('东方大厦'*3),输出:东方大厦东方大厦东方大厦

3、多维数组

多维数组就是数组中的元素仍是数组。维数根据数组嵌套层次计算:

stus=['aaaa','bbbb','cccc','dddd','eeee','ffff',['ggg','hhh'],'jjjjj']#这就是一个2维数组

stus=['aaaa','bbbb','cccc','dddd','eeee','ffff',['ggg','hhh',[2323,45455]],'jjjjj']#这就是一个3维数组,最外层是stus[],第二层是['ggg','hhh',[2323,45455]],第三层是[2323,45455]

多维数组的取值:根据下标逐层取:

比如上例要取最里层的45455,一层一层深入,首先45455在最内层[2323,45455]的1位置(或者-1位置),然后最内层在第二层['ggg','hhh',[2323,45455]]的2位置,第二层整体在最外层的6位置,所以最终结果为stus[6][2][1]或者stus[6][-1][-1],最后一个元素也可用-1取

python基础二(list,tuple元祖、dic字典,字符串)

4、循环遍历数组

一维数组:

for var in words:   #var此时代表的就是words中的每个元素
    print var
#第二种方法
for i in range(5) #i表示循环次数,从0开始,同时也充当words的下标
print(words[i])

多维数组

words=['1','sdf ','3232','ddsdff','fffdfdf',[1,2,4,'dsfsd']]
#如果想要遍历所有元素,包括内置的list[1,2,4,'dsfsd']的所有元素。则在遍历words的时候,可以做一下判断,当words的元素类型为list时,再次循环 for name in words:
if type(name)==list: #判断一个变量的类型,是否是list
for i in name: #如果是list,继续遍历该变量
print(i)
print(name)

5、切片  

# 切片是list取值的一种方式,可一次取出多个元素
nums=['','','sdf','fere','dsfds']
print(nums[1:3]) #取出下标从1开始至2的元素,即:nums[1]nums[2],顾头不顾尾,nums[3]的取不到
print(nums[1:]) #取值从下标1开始,到结束。如果从某个下标开始取,取到末尾结束,那么末尾的下标可以省略不写
print(nums[:3]) #取值从下标1开始,到下标1.如果是从头开始取,取到后面某个下标结束,那么开头的下标可以不写
print(nums[:]) #取所有的
#如果想有规律的隔几个取一个,则可以加上步长
例:lis=[1,2,3,4,5,6,7,8,9]      print(lis[::2]) #步长是2,结果是1,3,5,7,9
这里步长是正数,则按照从左往右依次取,如果步长为负数,则需要从右往左取值:
print(lis[::-1]) #步长是负数,反向取,结果是9,8,7,6,5,4,3,2,1
这个反转取值,是会产生一个新的list,在原来list的基础上反向,并不会改变原来list的顺序,此时如果你继续输出print(lis),会发现,并没有任何变化 但是如果用reverse函数,那就回改变原有list的值:
lis.reverse() print(lis)#此时,lis输出顺序就是反向的
切片同样适用于字符串:
s='abcdefg'
print(s[:3]) #输出abc,下标从开始到2,顾头不顾尾,所以下标3取不到

6、元组

元祖也是一种list,但他和list的区别在于,元祖里面的元祖不可修改。元组定义的格式是用一个小括号括起来所有的元素,元素中间用逗号分隔,需要注意的是,如果元祖中只有1个元素,则需要在最后加一个逗号

例:yuanzu=(1,2,3,4,5,'wewew')

yuanzu=(1,)#只有一个元素,要加上逗号

相关操作和list一样:

print(yuanzu.index('wewew')) #找到元素的下标

print(yuanzu.count('wewew')) #找到元素的个数

元祖只有index和count方法,元祖的元素不可变更,修改增加都不行:
  如果yuanzu[3]=43,会提示错误 TypeError: 'tuple' object does not support item assignmen

7、字典

字典是一种通过名字或者关键字引用的得数据结构,其键可以是数字、字符串、元组,为key-value格式,取数据非常方便,而且速度很快。

字典的定义用大括号{}将元素括起来,里面是一对一的键值对key-value.,key和value之间用冒号分隔

例:infos = {'name':'小红','sex':'女','addr':'北京','age':15} #name,sex,addr,age是key, 小红,女,北京,15是对应的value

1、字典操作:

增加

#增
infos['phone']=13611087045 #通过指定key来增加,但是如果key原本就存在,就会修改原来key值.如果key不存在,会新增一对key-value
注意:对于嵌套字典,这种方式新增key-value时,外层的key必须存在,否则会出错

python基础二(list,tuple元祖、dic字典,字符串)

infos.setdefault('phone','')#但是如果用setdefault方法,key值原本就存在的话,是不会改变原来的值

infos.setdefault('name','使劲地激发')#不会改变原来的值,print(infos['name'])的结果还是小红
infos['name']='熊阿兰' #会改变原来的值,print(infos['name'])#输出结果就是熊阿兰
infos.update(set1)# 将set1字典的元素,加入到infos字典中,如果key有重复的,则覆盖

改:

修改的话,就直接调用key修改即可:infos['name']='熊阿兰'

删:

infos.pop('name') #指定key来删除
infos.popitem() #随机删除一个key
del infos['phone'] #指定key来删除
infos.clear() #清空字典

查:

print(infos.get('phone'))#取不到这个key的话,就是None
print(infos.get('phone',110))#如果取不到这个key的话,默认就是110
print(infos['phone'])#如果key不存在会报错,所以一般不用这个 print(infos.values())#获取到字典所有的value print(infos.keys()) #获取到字典所有的key
print(infos.items()) # 获取字典所有的k-v
#如果字典多层嵌套,想要取字典中某个value时,方法同list,一层一层深入取值
people = {
'小红':{
'age':18,
'class':'二年一班'
'shoes':['nike','addis','lv','chanle']
}}
要想取到lv,则 people['小红']['shoes'][2]
1、先people['小红']取到key 小红对应的value:
  {
'age':18,
'class':'二年一班'
'shoes':['nike','addis','lv','chanle']
} 2、 然后再用[shoes]取到key shoes对应的values:['nike','addis','lv','chanle']
3、然后这是一个数组,所以用索引[2]取到对应的lv,综上people['小红']['shoes'][2]

 

循环字典:

#直接循环一个字典的话,那么循环的是字典的key
for p in infos:
  print(p)#书出来是people中的所有key
for k,v in infos.items(): #循环的时候,同时取key和value
print(k,'======》',v)

8、常用的字符串方法

如下,需要用时,直接参考使用

a='   字 符 串    \n\n\n\n\n'
c = a.strip() #默认去掉字符串两边的空格和换行符
c= a.lstrip() #默认去掉字符串左边的空格和换行符
c = a.rstrip() #默认去掉字符串右边的空格
print('c...',c)
print('a...',a) words = 'http://www.nnzHp.cn'
print(words.strip('day')) #如果strip方法指定一个值的话,那么会去掉这两个值
print(words.count('a')) #统计字符串出现的次数
print(words.index('z')) #找下标,如果元素找不到的话,会报错
print(words.find('z')) #找下标,如果元素找不到的话,返回-1
print(words.replace('day','DAY')) #替换字符串
print(words.isdigit()) #判断字符串是否为纯数字
print(words.startswith('http')) #判断是否以某个字符串开头
print(words.endswith('.jpg')) #判断是否以某个字符串结尾
print(words.upper()) #变成大写的
print(words.lower()) #变成小写的 username = 'abcdefADS12345@#¥'
print(username.isalpha()) #判断字符串是否全为字母和汉字
print(username.isalnum()) #判断是否包含汉字,字母和数字,它是只要有没有特殊符号就返回true

print(a.islower()) #是否全都是x小写字母
  print(a.isupper()) #是否全都是大写字母


join方法:用特定的字符,将可循环的数据类型链接起来,比如list,字符串等,

如下两个例子

python基础二(list,tuple元祖、dic字典,字符串)python基础二(list,tuple元祖、dic字典,字符串)

split(‘,’):根据某个字符串,分割字符串,什么也不传的话,是以空格分割的。最终返回一个list

python基础二(list,tuple元祖、dic字典,字符串)

字符串格式化:format

字符串格式化有两种方式,第一种就是前面写的%s %d占位符方式:

import datetime
name='zhangyoa'
date=datetime.date.today()
print('%s你好,欢迎你登陆,今天的日期是%s'%(name,date))
这种方式要求前面的占位符跟后面跟着的变量要一一对应,如果碰到变量比较多的情况,就比较麻烦,要对准哪个对应哪个。

 第二种方式就是用字符串的format函数

python基础二(list,tuple元祖、dic字典,字符串)

str.center()方法:让字符串居中显示,可以规定总长度,长度不够,用字符代替

python基础二(list,tuple元祖、dic字典,字符串)

'str' .zfill(n)方法:将用0将字符串str补充至长度为n,

print('1'.zfill(4))#输出结果就是0001

9、string模块的常用方法

使用string模块的方法之前,先要导入该模块,import string

import string
string.ascii_letters#所有的大小写字母
string.ascii_lowercase#所有的小写字母
string.ascii_uppercase#所有的大写字母
string.punctuation#所有的符号
string.digits#所有的数字