Python列表,字典和字符串操作
列表:
列表:list, 也叫数组,表现[].
特点:有角标,元素可以重复,有序的元素 例子:
stus = ['王志华','乔美玲','乔美玲','王文文','feixiang']#中括号,这就是一个list;
只有加了引号就是字符串儿(如stus = ‘['王志华','乔美玲','乔美玲','王文文','feixiang']’)
下标:中括号中每个名字的序数,也称角标,索引
元素:列表中各个内容,如王志华
!特别注意,下标是从0开始的。 stus2 = []
stus3 = list()
#都是定义空的list 增加元素(俩种方法,末尾和指定位置)
stus.append('赵燕')#在list末尾增加一个元素
stus.insert(0,'杨静')#在指定下标位置增加元素。
stus.insert(20,'蔡进')如果指定位置不存在,会加在末尾 print('stus的长度是',len(stus))#取元素个数 改
stus[3] = '蔡康永'#找到下标,直接赋值更改
print('改完之后的',stus)
print(stus[-1])#负表示从后边开始数,用于查找后边数据 删除
stus.pop()#pop默认删除最后一个元素
stus.pop(2)#删除角标为2,即第三为元素
stus.remove('乔美玲')#删除输入的元素
stus.pop(8)#下标8的元素不存在,会报错
stus.remove('乔美')#乔美元素不在列表,会报错
del stus[-1]#也是删除指定的元素
stus.clear()#清空 查
result= stus.count('乔美玲')#查询输入元素在list里面出现的次数
result= stus.count('乔美')#不存在的元素,会出现0
no = stus.index('乔美玲')#找元素的下标
no2 = stus.index('乔美玲')#list中有俩个或几个,只会返回最前边一个的下标
no3 = stus.index('乔美')#找不在表中元素的下标,会报错
stus.reverse()#反转(转置)
stus.sort()#排序,按字母数字排的,文字没法排
nums = [3,6,2,6,3,9,1]
# nums.sort()
# nums.reverse()
# nums.sort(reverse=True)#排序后又反转,会改变排序方式
nums.extend(stus)#把一个list的元素加入到另一个list
# print(nums) 布尔类型
True False print(1>2)
if '乔美玲' in stus:#也可以用 if stus.count('乔美玲') is not 0:
print('同学存在')
else:
print('同学不存在') stus = ['杨静', '王志华', '王银梅', '乔美玲','段鑫琪', '王立文', '赵燕','杨华', '周永波', '杨静']
for s in stus:#列表直接循环,是取的元素。
print('s的值是%s'%s)
如果直接循环一个list,那么每次取值的就是list里边的每个元素。
for i in range(len(stus)):
print(i) index = 0
while index < len(stus):
print(index)
index += 1
p = xpinyin.Pinyin()
for s in stus:
stu_pinyin = p.get_pinyin(s,'')
print(stu_pinyin) for i in range(len(stus)):
print('下标是%s,值是%s'%(i,stus[i])) for index,stu in enumerate(stus):#同时取到下标和值
print('%s ==> %s'%(index,stu)) for index,stu in enumerate(stus,1):#同时取到下标和值,加1取下标从1开始
print('%s ==> %s'%(index,stu)) choice = ['注册','登录','退出','购物']
print('输入编号进入对应的操作')
for index,c in enumerate(choice,1):
print('%s ==> %s'%(index,c)) 多维数组
stu2 = [1,2,3,4,['a','b','c',['哈','哈哈']]] #三维数组
print(stu2[4][1])#一层层找,先找到第一层的第4个元素,再第二层的第1个元素,这个结果为b
print(stu2[4][3][1])#一层层找,先找到第一层的第4个元素,再第二层的第3个元素,然后第三层的第一个元素,这个结果为哈哈
stu2[4][3].insert(1,'蔡进')#一层层找,先找到第一层的第4个元素,再第二层的第1个元素
#print(stu2) 切片:list取值的一种方式,它指定范围取值
stu4 = [1,2,3,4,5,6,7,8]
#print(stu4[2:5])#切片取值,顾头不顾尾。即没有取到6.
#print(stu4[:5])#从最前面开始取
#print(stu4[2:8])#取到8,比最后一位的角标大一位
#print(stu4[2:])#取到最后面
#new_stu = stu4[:]#复制了一个新的list
#print(stu4[:])
#print(stu4[0:8:2])#隔一个取一个,2是步长,写的2,实际上跳过了1个。为1时不用跳
#print(stu4[0:8:-1])#变成了空
#print(stu4[::-1])#步长为负数的时候,为从右往左取值
#print(stu4[-1:-9:-2])#前边加数组,且不为负数时,变成了空。
#new_stu = stu4#下节课讲 #下标、切片、长度、循环 同样适用于字符串,但不能修改。
#name = '马上要吃饭了'
#print(name[3],len(name))
#for i in range(len(name)):
# print(i) 字典: 列表很难存储大量信息,用起来也不方便,而且效率很低,就引入了字典。# stus=['王志华','乔美玲','段鑫琪','王立文']# stu_info = [ # ['王志华','18''女''address']
# ['乔美玲','18''女''address']
# ['段鑫琪','18''女''address']
# ['王立文','18''女''address']
# ]
# for stu in stu_info:
# if stu[1] == "乔美玲": 字典:
#stu_info = {'name':'王志华','age':'18','addr':'北京'}#大括号,字典;是key-value形式
!字典里边的key是唯一的,否则后边的会覆盖前边的;
!元素是乱序的。 取值
# print(stu_info)#取字典
# print(stu_info['name'])#取key为name是的值
# print(stu_info['age'])#取key为age时的值
!jason同字典外观一样,但jason就是字符串儿,只是个格式长得非常像。 查
# print(stu_info)
# print(stu_info['name'])#查name的value,不存在时会报错
# print(stu_info.get('name',500))#.get后边可以指定不存在时报的结果,会出现500
加.get,当key存在时,跟没get是一样的。
但不存在时,会报None,即空空的,也不报错。但没get的会报错。
# print(stu_info['age']) 修改
# stu_info['addr']='上海'#直接复制修改
# print(stu_info) 新增
#stu_info['phone']='1233434'#key不存在时,会新增 #不安全,存在时会改变phone的值。
# stu_info.setdefault('email','ddd@163.com')#key不存在时会新增,存在时不改变
!stu_info.setdefault('age','19')#key存在时,值不会新定义
# print(stu_info) 删除
#stu_info.pop('phone')
#stu_info.clear()#清空这个字典
#stu_info.popitem()#从字典里面随机删除一个元素
#print(stu_info)
#字典没有顺序 # d1={}
# d2={'a':'v'}
# d1.update(d2)#把d1更新为d2
# print(d1) # print(stu_info.keys())#取所有的key
# print(stu_info.values())#取所有的value
# print(stu_info.items())#取所有的元素 直接循环字典,看看每次循环的是字典的key
# for k in stu_info:#循环字典,叫啥无所谓,循环的是key
# print(k) 判断
#print('name' in stu_info)#判断这个key存不存在
#print('name' in stu_info.keys())#判断这个key存不存在,需要将所有的key拿出来列表再判断,没上边的快。 #for i in stu_info:#循环字典,叫啥无所谓,循环的是key,比下边的方法快
# s='%s=>%s'%(i,stu_info.get(i))
# print(s) # for j,v in stu_info.items():#俩个值,取key和value。因为需要列表,所有很慢
# b='%s=>%s'%(j,v)
# print(b) 多维字典:
# stu_info={
# '小明':{'passwd':'123456','phone':'132323','age':'18'},
# '小黑':{'passwd':'223456','phone':'232323','age':'28'}
# }
# print(stu_info['小明']['phone'])#层层定位再取值 d = {
'春波':{
"car":{'BMW':5,'BENZ':3,'audi':3,'byd':4},
"house":["北京",'南京','上海'],
"money":1000000,},
'乔美玲':{
"bag":['xx','lv',],
"house":['三环','4环'],
"hzp":['skii','ysl'],
'language':{
'普通话':10,
'东北话':20,
'日语':0,
'英语':4
}
}
}
#马春波卖了一套上海的房子,卖了500万
# d['春波']['house'].pop(2)
# d['春波']['money']+=5000000
#算一下马春波有多少辆车
#m=d['春波']['car'].values()
#马春波花了100万买了一辆劳斯莱斯 #乔美玲的东北话降级了,从20变成了10 #乔美玲会哪些语言 #print(d)
字符串
t='user1,user2,user3,user4,user5,user6,user7'
print('分隔符',t.split(','))#取列表,按照某个字符来分割字符串儿
print('',t.split())#什么都不传,按空格分开。没有空格就认为是一个元素 cars = ['ad','cd','ef']
print('、'.join(cars))#以某个字符把list中的元素连起来,变成一个字符串儿。跟split全反 s='a... adbDEF'
print(s.strip()) #默认去掉字符串俩边的空格和换行符
new_s = s.strip('.')#加了点,就字符串最俩边的点儿也可以去掉
print(new_s)
print(s.rstrip())#去右边的
print(s.lstrip())#去左边的
print(s.count('.'))#某个字符串出现的次数
print(s.index('a'))#找某个字符串下标,不存在会报错
print(s.find('c'))#找某个字符串下标,不存在会返回-1
print(s.replace('adb','ABC',1))#替换,数字代表几个
print(s.upper())#变成大写
print(s.lower())#变成小写
print(s.capitalize())#首字母大写
print(s.startswith('p'))#判断是不是以p开头的
print(s.endswith('p'))#判断是不是以p结尾的
print(s.islower())#判断是否小写
print(s.isupper())#判断是否大写
print(s.istitle())#判断是不是标题(首字母是不是大写)
print(s.isdigit())#判断是不是整数
print(s.center(50,'*'))#放在50个字符中间,字符不够,用*来凑
s2='abc123'
print(s2.isalpha())#判断是不是全字母或汉字,不能有数字
print(s.isspace())#判断是否全部都是空格
print(s.isalnum())#没有特殊字符,返回True
print(s.isidentifier())#判断是不是一个合法变量名
#用.format来格式化字符串。用{}来占位,不用一一对应
#目标:输出字符串 insert into user VALUE (username,password,addr,email,phone)
#第一种格式化字符串
s='insert into user VALUE ({username},{password},' \
'{addr},{email},{phone}); '
new_s = s.format(addr='北京',phone=1223,email='niu@qq.com',username='niuhanyang',password='12345')
print(new_s) #第二种格式化字符串
s='insert into user VALUE ({username},{password},' \
'{addr},{email},{phone}); '
d = {'addr': '北京', 'username': 'xiaohei', 'password': '12345', 'email': 12,
"phone": 'sdfs'}
s_map=s.format_map(d)
print(s_map)
l = [1,2,3,4,5,6,7,8,9,10]
for i in l:
res='0'+str(i)
print(res) t='user1,user2,user3, user4,user5,user6,user7'
print('传分隔符',t.split(','))#按照某个字符来分割字符串儿
print('什么都不传',t.split())#什么都不传,按空格分开。没有空格就认为是一个元素 cars = ['ad','cd','ef']
print('、'.join(cars))#以某个字符把list中的元素连起来,变成一个字符串儿。跟split全反
print(str(cars))#看着没有区别,但已经变成了字符串 replace strip join split isdigit upper lower format startswith endswith count
这几个必须记住,很常用
Python列表,字典和字符串操作的更多相关文章
- python 列表,字典,元组,字符串,QuerySet之间的相互转换
1. 列表转换成字典list1 = ['key1','key2','key3']list2 = ['value1','value2'] dict1 = zip(list1,list2) # dict( ...
- (转)python 列表与元组的操作简介
python 列表与元组的操作简介 原文:https://www.cnblogs.com/QG-whz/p/4782809.html 阅读目录 列表 list函数 列表的基本操作 列表方法 元组 tu ...
- python学习笔记(字符串操作、字典操作、三级菜单实例)
字符串操作 name = "alex" print(name.capitalize()) #首字母大写 name = "my name is alex" pri ...
- python(二)——list、字典、字符串操作
列表——list 假设一种场景,想要存班里所有同学的名字,那应该拿什么存呢? 我们可以拿一个字符串去存,例如: stus = "s1,s2,s3,s4,s5……sn" 那我们要从里 ...
- python3.0 day02 列表、元组 、字典、字符串操作
1.列表.元组操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作,类似于其他语言中的数组. 定义列表 names = ['Lioa',"Tenglan ...
- 小白的Python之路 day2 字符串操作 , 字典操作
1. 字符串操作 特性:不可修改 name.capitalize() 首字母大写 name.casefold() 大写全部变小写 name.center(50,"-") 输出 '- ...
- python中用json存储列表字典等文件操作
JSON字符串用json.dumps, json.loads JSON文件名用json.dump, json.load 由于需要在脚本重启后依旧能够记住之前所使用的列表内容, 故采用json存储列表文 ...
- Learn day3 深浅拷贝/格式化/字符串/列表/字典/集合/文件操作
1. pass break continue # ### pass break continue # (1) pass 过 """如果代码块当中,什么也不写,用pass来 ...
- python数据类型:字典dict常用操作
字典是Python语言中的映射类型,他是以{}括起来,里面的内容是以键值对的形式储存的: Key: 不可变(可哈希)的数据类型.并且键是唯一的,不重复的. Value:任意数据(int,str,boo ...
- 『无为则无心』Python序列 — 18、Python列表概念及常用操作API
目录 1.列表的概念 (1)列表的定义 (2)列表的应用场景 (3)列表的定义格式 2.列表的常用操作 (1)列表的查找 1)通过下标查找 2)通过方法查找 3)判断是否存在 (2)列表的增加 @1. ...
随机推荐
- request.getParameterValues 出现 [Ljava.lang.String;@ 错误
在实现简单的本地登录系统时,需要把page1.jsp的表单显示在page2.jsp中. 其中获取page1.jsp表单的办法就是在页面1的<form>中加入action="pag ...
- 关于selenium的8种元素定位
selenium中有八种元素定位,分别是:id,name,class_name,tag_name,link_text.partial_link_text.xpath.css 简单的定位可以用 id.n ...
- axios formData提交数据 && axios设置charset无效???
但是这样会出现一个问题,什么问题呢? 我设置了请求头编码utf-8,但是没生效 content-type里面没有出现utf-8???????查了很多资料,说这是axios固有的bug,我....... ...
- 微信商户/H5支付申请 被拒原因:网站存在不实内容或不安全信息
看到这张图片,申请H5支付的朋友估计是崩溃的,被拒的原因是网站存在不实内容或不安全信息. 解决方法有两种: 针对不安全内容,则是微信支付审核团队认为你的网站存在安全漏洞的,需要修复. 针对不实内容,则 ...
- LeetCode第二十三题-合并n个有序链表
Merge k Sorted Lists 问题简介:合并k个已排序的链表并将其作为一个排序链表返回. 举例: 输入: [ 1->4->5, 1->3->4, 2->6 ] ...
- Python简单基础小程序
1 九九乘法表 for i in range(9):#从0循环到8 i += 1#等价于 i = i+1 for j in range(i):#从0循环到i j += 1 print(j,'*',i, ...
- anylogic 常用模块及术语的使用
1.1 存量 创建存量变量 1. 在调色板视图下的Model页面中选择Stock 元素. 2. 在图形化编辑器中您所期望的位置点击鼠标,放置该存量. 3. 在属性视图下的Equation部分中,定义该 ...
- 【easy】108. Convert Sorted Array to Binary Search Tree
Given an array where elements are sorted in ascending order, convert it to a height balanced BST. Fo ...
- Sprite子节点透明度不能跟随父节点变化的问题求解(转)
原出处忘记了. [已解决]Sprite子节点透明度不能跟随父节点变化的问题求解 自己封装了一个按钮控件,点击的时候封装了一些动作,其中有透明度的变化. 当点击发生的时候,Sprite本体执行正常,但是 ...
- C# Emgu 类型转换
Bitmap: Bitmap位图文件,是Windows标准格式,也是.Net主要的图像存储格式. Bitmap类以System.Drawing为命名空间,继承抽象类Image,同时里面封装了非常多对图 ...