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. ...
随机推荐
- spring 4 + hibernate 4 配置数据库事务
配置事务时应该加载aopalliance-1.0.jar和aspectjweaver.jar这两个包,这两个包是必须的.
- Excel 将A表的基础数据拼接到B表中来-三种方法: ctrl+回车, VLOOKUP()函数,宏
A表 基础信息表 B表 业务信息表 将a表中的基础数据 拼接到B表的后面, 应用场景是: B表很多数据,很繁乱,名字不一定全, A表也是比较多的行,B表乱:比如有8行有李晨的,却只有3行是范仲淹的, ...
- arguments.callee.caller
1.Arguments Arguments是一个类似数组但不是数组的对象,说它类似数组是因为其具有数组一样的访问性质及方式,可以由arguments[n]来访问对应的单个参数的值,并拥有数组长度属性l ...
- easyui datagrid使用按钮
$('#datagrid').datagrid({ border:false, fitColumns:true, singleSelect: true, url:url, columns:[[ {fi ...
- VS2015创建ASP.NET应用程序描述
你的 ASP.NET 应用程序 恭喜! 你已创建了一个项目 此应用程序包含: 显示“主页”.“关于”和“联系方式”之间的基本导航的示例页 使用 Bootstrap 进行主题定位 身份验证,如果选择此项 ...
- 3D模型网站分享
http://www.cgjoy.com/work.php CG作品网 http://www.cgmxw.com/ CG模型王 http://www.cgmodel.cn/ CG模型网
- C# 常用类型校验Validate
using System.Text; using System.Text.RegularExpressions; namespace 落地页测试代码 { public class Validate { ...
- tensorflow从入门到放弃-0
刚接触tensorflow一周,感觉还是有点难度的.遇到这么个问题 failed call to cuInit: CUDA_ERROR_NO_DEVICE: no CUDA-capable devic ...
- 高可用Redis(六):瑞士军刀之bitmap,HyperLoglog和GEO
1.bitmap位图 1.1 bitmap位图的概念 首先来看一个例子,字符串big, 字母b的ASCII码为98,转换成二进制为 01100010 字母i的ASCII码为105,转换成二进制为 01 ...
- luoguP2502旅行
2006河南省选 思路:(参考题解) 枚举最大的边(第\(i\)条),从这条边开始由大到小枚举.添边,当\(s\)和\(t\)联通时,此时即为以第\(i\)条边为最大边的答案,比较每个答案,判断输出. ...