Python学习--列表、字典、元祖、字符串

一、列表

Python内置的一种数据类型是列表:list,它是一种有序的集合,可添加和删除其中的元素。

列表的创建:将用逗号分隔的不同数据项用方括号括起来即可

获取list元素的个数:len()

1 name = ['小白','小黑','小花','小灰'] #创建列表
2 print(name)
3 print(len(name))

1、列表方法及其基本操作

1.1 增

append():追加元素到列表末尾

insert():插入元素到列表指定位置

1 name = ['小白','小黑','小花','小灰'] #创建列表
2 
3 #
4 name.append('小黄')
5 print(name)
6 name.insert(0,'小绿')
7 print(name)

1.2 删

pop():删除列表末尾的元素,pop(i)删除指定位置的元素,i为索引位置

remove():移除列表中某个值的第一个匹配项

del 列表名[i]:删除指定位置的元素,i为索引位置

clear():清空列表中的元素

1 name = ['小白','小黑','小花','小黑','小灰'] #创建列表
2 
3 #
4 name.pop() #删除末尾元素
5 print(name)
6 name.pop(0) #删除第一个元素
7 print(name)
8 name.remove('小黑') #删除列表中值为小黑的第一个元素
9 print(name)

 

1 name = ['小白','小黑','小花','小灰'] #创建列表
2 
3 #
4 del name[-1] #删除指定位置的元素
5 print(name)
6 name.clear() #清空列表中的元素
7 print(name)

 

1.3 修改

使用索引标记为某个特定的的元素赋值

1 name = ['小白','小黑','小花','小灰'] #创建列表
2 
3 #修改
4 name[3] = '小黄'
5 print(name)
6 name[4] = '小绿' #修改的时候如果指定的下标不存在,会报错

1.4 查

index():从列表中找出某个值第一个匹配项的索引位置

count():统计某个元素在列表里出现的次数

1 name = ['小白','小黑','小花','小灰'] #创建列表
2 
3 #
4 print(name[-1]) #取值 下标为-1的时候,就取最后一个元素
5 print(name.index('小花')) #获取元素的下标,如果找不到那个元素的话,会报错
6 print(name.count('小花')) #查看元素在list里面出现了多少次

1.5 反转

reverse():反转列表,会改变原列表的值

1 name = ['小白','小黑','小花','小灰'] #创建列表
2 
3 #反转
4 name.reverse() #就是把这个list反转一下
5 print(name)

1.6 排序

sort():对列表进行排序;升序:列表名.sort();降序:列表名.sort(reverse=True)

1 nums = [9,2,34,12,34,457,2342]
2 # nums = ['b','f','e','z','g','h']
3 nums.sort() #升序
4 print(nums)
5 nums.sort(reverse=True) #排序,降序
6 print(nums)

1.7 合并列表

cities = ['北京','上海']
cities2 = ['成都','深圳','广州']
#方法一:
print(cities+cities2)     #不会改变cities,和cities2的值

# 方法二:
# cities.extend(cities2) #把cities2的元素加到cities中,改变了cities的值
# print(cities)

1.8 切片

切片可以获取多个元素,可理解为:从第几个元素开始,到第几个元素结束,获取他们之间的值;

切片格式:列表名:[1:10],如要获取name的第一个到第五个元素, 用name[0:6],切片不包含后面那个元素的值的,顾头不顾尾

前面的下标为0时可省略写为:name[:6];

切片后面还可以写一个参数,叫做步长。即隔多少个元素取一次,默认不写时就是隔一个取一次。

切片操作也可以对字符串使用,和列表的用法一样,实例如下:

1 # 切片
2 # 切片是list取值的一种方式
3 nums = ['张三','李四','王某某','周大']
4         #  0      1      2      3
5 
6 print(nums[1:3])  #顾头不顾尾
7 print(nums[1:]) #如果从某个下标开始取,取到末尾结束,那么末尾的下标可以省略不写
8 print(nums[:2]) #如果是从头开始取,取到后面某个下标结束,那么开头的下标可以不写
9 print(nums[:]) #取所有的

 1 lis = list(range(1,21))
 2 print(lis)
 3 print(lis[::2]) #步长,隔几个取一次
 4 print(lis[::-2]) #步长,隔几个取一次
 5 # #如果步长是正数的话,从左往右边开始取值
 6 # ##如果步长是负数的话,从右边往左边开始取值
 7 
 8 print(lis[::-1]) #反转list
 9 print(lis)
10 print(lis[1::-1])
11 
12 lis.reverse()  #改变了原来list的值
13 new_list = lis[::-1]  #产生了新的一个list,不会改变原来list的值
14 print(new_list)
15 print(lis)

1.9 多维数组

1 #多维数组
2 n = [1,2,3]  #1维数组
3 n2= [  [1,2,3] ,['haha'] ] #二维数组
4 my = [[1,2,3,4,5,6],['name','age','sex','哈哈',['小明','小黑','小白']],890] #3维数组
5 print(my[1][4][0])
6 my[1][4].append('小紫')
7 my[1][2]='性别'
8 print(my)
9 print( len(my) )  #看变量的元素个数,长度

 二、元祖

元组和列表的区别:元组的值不能改变,一旦创建,就不能再改变了;只能读,无法增删改

元组的定义方式:用小括号();

元祖方法:元组只有两个方法,count和index;

1 #定义元组
2 cities = ("beijing","shanghai") #一旦定义好,就不能再变了
3 #cities[0] = "tianjing"  #元组的值不可修改,这样写会报错
1 #元素操作及方法,只能查不能增删改
2 print(cities[0])
3 print(cities.count("beijing"))
4 print(cities.index("beijing"))

三、字典

字典:dict,全称是dictionary,其他语言中也称为map,它具有极快的查找速度;

字典是一种key-value的数据类型。比如:要存每个人的信息,每个人的编号为key,value就是每个人的信息,这样一个字典就能存所有人的信息了。

字典的定义:使用{},大括号;每个值用“,”隔开,key和value使用“:”分隔。

1 #定义字典
2 info = {
3     'name':'哈哈',
4     'age':18,
5     'sex':'不知道',
6     'addr':'天通苑',
7     'qq':19823423,
8     'email':'shenyang@qq.com'
9 }

 

字典的特性:
1)字典是无序的;它没有下标,用key来当索引,所以是无序的
2)字典的key必须是唯一的:因为它是通过key来进行索引的,所以key不能重复

字典的增删改查方法:

增加:

 1 #定义字典
 2 info = {
 3     'name':'张三',
 4     'age':18,
 5     'sex':'',
 6     'addr':'天通苑',
 7     'qq':19823423,
 8     'email':'zhangsan@qq.com'
 9 }
10 
11 #增加:两种方式
12 info['class'] = '1班'
13 info.setdefault('house','一环')
14 print(info)

修改:

1 info['age'] = 38 #修改
2 print(info)
3 info.setdefault('age',49)  #setdefault这种方式,如果key已经存在,不管它,如果key不存在的话,就新增。
4 print(info)

删除:

1 #删除
2 info.pop('sex')  #pop():#标准的删除方法,key不存在时会报错
3 del info['sex'] #del key不存在时会报错
4 print(info)
5 
6 info.clear()  #清空字典
7 info.popitem() #随机删除一个key

查询:

1 #取值、查询
2 print(info['addr'])
3 # print(info['add'])  #传入不存key时报错
4 
5 print(info.get('email'))
6 print(info.get('eeee')) #传入不存在key时,返回None
7 # print(info.get('eee','ceshi') )#key不存在时,返回后面指定的值
8 
9 print('email' in info) #判断email是否在这个字典中,返回True或者False

 查询所有的key,value:

1 print(info.values())
2 print(info.keys())

 

把一个字典加入到另一字典中:

1 yaoyuan = {'age':19,'name':'李四'}
2 info.update(yaoyuan)  #把一个字典加入到另外一个字典里面
3 print(info)

循环字典:

1 for infos in info:  #循环时默认打印字典的key
2     print(infos)
3 
4 #循环取k,v
5 for k,v in info.items():
6     print(k,v)

四、字符串

字符串:它可以存任意类型的字符串,比如名字,一句话等等

字符串常用方法:

1 name = 'apple'
2 print(name.capitalize()) #把字符串首字母大写
3 print(name.center(50,'-')) #把字符串居中的
4 print(name.index('p'))#返回匹配到的第一个元素的位置,找不到下标的时候会报错
5 print(name.isalnum()) #只能有英文、数字
6 print(name.isalpha()) #判断是否只为英文的,汉字也可以

 

1 print(name.count('p')) #查询xx出现的次数
2 print(name.endswith('.jpg'))#判断字符串是否以xx结尾
3 print(name.startswith('ap'))#判断字符串是否以xx开头
4 print(name.upper()) #全转化为大写
5 print(name.lower()) #全转化为小写
6 print(name.find('p')) #它找不到元素的时候,不会报错,会返回-1

1 name = '   apple       '
2 print(name.isdigit()) #判断是否为纯数字
3 print(name.isspace()) #判断是否全都是空格
4 print(name.strip())#去掉字符串两边的东西,默认是去调两边的空格和换行符的
5 print(name.lstrip())#只去掉左边的
6 print(name.rstrip())#只去掉右边的
7 print(name.replace('le','haha')) #替换字符串,把前面的替换成后面的

1 num ='88'
2 print(num.zfill(4)) #在字符串前面补0,数字代表补0后字符串的总位数
3 
4 names = 'dt,wx,xin,wang'
5 print(names.split(',')) #1、分割字符串,2、把字符串变成一个list 3、默认是以空格和换行符分割的
6 
7 stus = ['hh','dd','ww','haha']
8 print('.'.join(stus)) #1、是吧list变成字符串的 2、以某个字符串连接

1 import string
2 print(string.ascii_letters)  #返回所有的大写+小写字母
3 print(string.ascii_lowercase) #返回所有的小写字母
4 print(string.ascii_uppercase) #返回所有的大写字母
5 print(string.digits) #返回所有的数字
6 print(string.punctuation) #所有的特殊字符

  备注:字符串的值定义好之后也不能被修改

#字符串定义好了之后,也不能修改
s = 'abcEFGabc'
# s[0]='h' #不能修改,这样修改会报错:TypeError: 'str' object does not support item assignment
new_s  = s.replace('abc','')  #原来的值不会被修改,这种方法会重新返回一个新的值
print("s=",s)  #s= abcEFGabc
print("new_s=",new_s) #new_s= EFG

 

posted @ 2018-06-06 09:03  dd0917  阅读(385)  评论(0编辑  收藏  举报