python学习day3------列表、元组、字符串操作
列表是有序的,支持增删改查,可以嵌套列表、字典(任何东西)
元组是有序的,只读列表
字符串的操作,可查,不可修改(本质新新的内容覆盖了原来的)
字典是无序的,通过K:V找元素,可以嵌套列表、字典
集合是无序的
一、列表
变量名后加中括号[],接下来介绍对列表进行查操作
#!/usr/bin/env python
#-*- Coding:utf-8 -*-
# Author:Eric.Shen test = []#列表的命名形式 name = ["zhangsan","lisi","wangmazi","chenwu","gousheng"]
print(name[0],name[2])#取出已知位置的数据,因为计算机在存储数据的时候是以0为开始位置
#>>>>zhangsan wangmazi #查
#切片
print(name[1:3])#从计算机位第一个位取到第二位:顾首不顾尾,
#>>>>['lisi', 'wangmazi'] print(name[4])#在知道列表有多长的时候用这个方法可以取到列表最后一位
#>>>>gousheng print(name[-1])#在不知道长度有多长的时候用这个方法可以取到最后一位
#>>>>gousheng print(name[-2])#亦可理解位从0往左数
#>>>>chenwu print(name[-2:])#即便是写的是负数的位置表示,也是自左往右数,
# 但是有一个机制就是顾首不顾尾,
# 但我想取最后一位的时候就会被忽略掉,
# 所以这个时候在冒号后面什么都不写就可以
#>>>>['chenwu', 'gousheng'] print(name[0:3])
#>>>>['zhangsan', 'lisi', 'wangmazi']
print(name[:3])#这两个效果一样,前面若是0的话就可以省略不写
#>>>>['zhangsan', 'lisi', 'wangmazi']
对列表进行增、替换、删等操作
#!/usr/bin/env python
#-*- Coding:utf-8 -*-
# Author:Eric.Shen test = []#列表的命名形式 name = ["zhangsan","lisi","wangmazi","chenwu","gousheng"]
#增
#追加数据
name.append("quandan")
#>>>>['zhangsan', 'lisi', 'wangmazi', 'chenwu', 'gousheng', 'quandan'] #插在指定位置
name.insert(1,"mingzi")#想把数据插在第几机器位就直接写
#>>>>['zhangsan', 'mingzi', 'lisi', 'wangmazi', 'chenwu', 'gousheng', 'quandan'] #改
name[2] = "qiangzi"#把在机器位置2上的lisi换下来用qiangzi
#>>>>['zhangsan', 'mingzi', 'qiangzi', 'wangmazi', 'chenwu', 'gousheng', 'quandan'] #删
name.remove("wangmazi")#在知道名字的情况下删除wangmazi
del name[3] #删除机器位置3上的名字
name.pop()#默认不输入机器位置就删除最后一个,如果输入机器位就跟del name[3]一样
print(name)
清空、反转、排序、扩展
#!/usr/bin/env python
#-*- Coding:utf-8 -*-
# Author:Eric.Shen test = []#列表的命名形式 name = ["zhangsan","lisi","wangmazi","chenwu","gousheng","lisi"]
#查找wangmazi位置
print(name.index("wangmazi"))
#>>>> 2
#找出上述找到的位置删的名字
print(name[name.index("wangmazi")])
#>>>>wangmazi #列表允许出现多个名字一样的
print(name.count("lisi"))#查找叫lisi的有几个 #name.clear()#清空列表
#name.reverse()#反转列表
#name.sort()#排序,按照ascll码进行排序
name1 = [1,2,3,4]
name.extend(name1)#扩展,将name1添加到name后面,name1没有删除
print(name)
#>>>>['zhangsan', 'lisi', 'wangmazi', 'chenwu', 'gousheng', 'lisi', 1, 2, 3, 4]
复制copy、深copy
#!/usr/bin/env python
#-*- Coding:utf-8 -*-
# Author:Eric.Shen
import copy test = []#列表的命名形式
#name[]是一个列表在内存中存储name指向存储的地址,你更改name里的东西name2也会跟着变得
#因为他们共同指向内存地址,修改name2,name也会变
name = ["zhangsan","lisi","wangmazi",["eric","jack"],"chenwu","gousheng","lisi"] name2 = name.copy()#复制一份copy只是浅得复制了一些,只复制第一层列表
name[2] = "王麻子"
name[3][0] = "ERIC"
print(name,"\n",name2) #这个是赋值
name2 = name
#深copy就是完全复制,需要添加copy模
name2 = copy.deepcopy(name)
分位切片
#!/usr/bin/env python
#-*- Coding:utf-8 -*-
# Author:Eric.Shen
import copy test = []#列表的命名形式
#name[]是一个列表在内存中存储name指向存储的地址,你更改name里的东西name2也会跟着变得
#因为他们共同指向内存地址,修改name2,name也会变
name = ["zhangsan","lisi","wangmazi",["eric","jack"],"chenwu","gousheng","lisi"]
#跳两位进行切片
print(name[0:-1:2])#这个语句得作用就是从0到-1位每跳两位进行切
二、元组
查找数据的位置
#!/usr/bin/env python
#-*- Coding:utf-8 -*-
# Author:Eric.Shen #元组就两个功能count,index,得到机器位
name = ("zhangsan","lisi","wangmazi")
print(name.count("zhansgan"))
#>>>>0
print(name.index("lisi"))
#>>>>1
三、字符串操作
首字母大写
统计字符串有几个字母
#!/usr/bin/env python
#-*- Coding:utf-8 -*-
# Author:Eric.Shen
#字符串操作
name = "my {name} is {eric}"
#首字母大写
print(name.capitalize())
#>>>Eric #统计字符串---下面的程序是统计字符串a有多少个
print(name.count("a"))
#>>>>0 #将字符串用50个*包裹着写在中间
print(name.center(50,"*"))
#>>>>***********************eric********************** #判断字符串是不是以ic结尾
print(name.endswith("ic"))
#>>>>True #在字符串中写一个tab键,它将tab转换多少个空格
#name ="eri\tc"
print(name.expandtabs(tabsize=30))
#>>>>eri c #找字符串相应元素的机器位数
print(name.find("name"))
#>>>>3 #判断是否有阿拉字符
print("abc123".isalnum())
#判断是否包含英文字符(返回True或False)
print("asA".isalpha())
#判断是否为10进制
print("1A".isdecimal())
#判断是不是一个整数
print("1A".isdigit())
#判断是不是一个合法的标识符(变量名)
print("1A".isidentifier())
#判断是不是小写
print("aA".islower())
#检测字符串是否只由数字组成。这种方法是只针对unicode对象。
print("1a".isnumeric())
#判断是不是标题,判断标准是每个首字母大写
print("My name is title".istitle())
#设备终端文件用此方法判断
print("My name is ".isprintable())
#判断是不是全部大写
print("aD".isupper())
#将字符串区分开
print("+".join(["","",""]))
#>>>>1+2+3
#保证我的字符串长度为50,不够的在后面以*补全
print(name.ljust(50,"*"))
#保证我的字符串长度为50,不够的在前面补上-
print(name.rjust(50,"-"))
#把大写变成小写
print("Eric".lower())
#把小写换成大写
print("Eric".upper())
#从左边去掉空格或者回车
print("\nEric".lstrip())
#从右边去掉空格或者回车
print("Eric\n".rstrip())
#去掉两边的空格或者回车
print("\nEric\n".strip())
#命名的时候前后的位数一致,把字母与数字对应,然后显示p如果有对应的字母换作后面的显示(嗯古时候密文一样)
p = str.maketrans("abcde","")
print("Eric".translate(p))
#>>>>Eri3 #替换(把c换成大写的C)后面还可以跟一个参数。替换几个(print("Eric c".replace("c","C",1)))
print("Eric c".replace("c","C"))
#找到最后边那个值得下标返回
print("eric ic".rfind("c"))
#把字符串按照空格(默认)分成列表
print("eric is ".split())
#把字符串按照行分
print("eric\n c".splitlines())
#全部变成大写
print("eric c".swapcase())
#前边不够50位自动用0填充
print("eric c".zfill(50))
四、字典操作
增删查改
#!/usr/bin/env python
#-*- Coding:utf-8 -*-
# Author:Eric.Shen #Key-value
info = {
'stu1101': "TengLan Wu",
'stu1102': "LongZe Luola",
'stu1103': "XiaoZe Maliya",
}
#字典是无需得没下标,有key
print(info)
#改字典stu1101(若不存在则创建)
info["stu1101"] = "武藤兰"
#查字典
print(info["stu1101"])
#删除字典
del info["stu1101"]
#指定删除
info.pop("stu1101")#标准姿势
#随机删除
info.popitem() #查
print(info.get("stu1103"))#得到其key对应得值
print("stu1103" in info)#info.has_key("1103") in py2.x
取值
#!/usr/bin/env python
#-*- Coding:utf-8 -*-
# Author:Eric.Shen #Key-value
info = {
'stu1101': "TengLan Wu",
'stu1102': "LongZe Luola",
'stu1103': "XiaoZe Maliya",
}
b = {
'stu1101': "Eric",
1:3,
2:5
} #升级:有相同得key就覆盖,没有得就创建
info.update(b)
print(info) #初始化一个新的字典(作用跟copy一样)
c = dict.fromkeys([6,7,8],[1,{"name":"eric"},666])
print(c)
c[7][1]["name"] = "ASD"
print(c)
#{8: [1, {'name': 'eric'}, 666], 6: [1, {'name': 'eric'}, 666], 7: [1, {'name': 'eric'}, 666]}
#{8: [1, {'name': 'ASD'}, 666], 6: [1, {'name': 'ASD'}, 666], 7: [1, {'name': 'ASD'}, 666]} #字典变成列表
print(info.items()) av_catalog = {
"欧美":{
"www.youporn.com": ["很多免费的,世界最大的","质量一般"],
"www.pornhub.com": ["很多免费的,也很大","质量比yourporn高点"],
"letmedothistoyou.com": ["多是自拍,高质量图片很多","资源不多,更新慢"],
"x-art.com":["质量很高,真的很高","全部收费,屌比请绕过"]
},
"日韩":{
"tokyo-hot":["质量怎样不清楚,个人已经不喜欢日韩范了","听说是收费的"]
},
"大陆":{
"":["全部免费,真好,好人一生平安","服务器在国外,慢"]
}
}
#修改
av_catalog["大陆"][""][1] = "可以在国内做镜像" #只打印关键字
print(info.keys()) #先去taiwan里取值,如果没有就创建,有就把它取出来
av_catalog.setdefault("taiwan",{"www.baidu.com":[1,2]})
print(av_catalog )
字典的循环
#!/usr/bin/env python
#-*- Coding:utf-8 -*-
# Author:Eric.Shen #Key-value
info = {
'stu1101': "TengLan Wu",
'stu1102': "LongZe Luola",
'stu1103': "XiaoZe Maliya",
} #字典的循环
for i in info:
print(i,info[i]) #先转成列表在循环输出
for k,v in info.items():
print(k,v) #前者快后者慢
五、集合
集合的运算:交并补差,对称差集
#!/usr/bin/env python
#-*- Coding:utf-8 -*-
# Author:Eric.Shen #集合也是无序的
list1 = [1,5,9,4,8,3,45,7,]
list1 = set(list1) list2 = set([2,6,5,7,9,1,56,4])
print(list1,list2) #交集,list1与2的交集
print(list1.intersection(list2)) #运算符表达交集 a = t & s
#并集1与2的并集
print(list1.union(list2)) #运算符表达并集 b = t | s
#对称(反向)差集 交集的补集,全集是1和2 这是除去他们的交集剩下的元素
print(list1.symmetric_difference(list2)) #运算符表达对称差集 d = t ^ s
#差集1与2的差集,1与 1和2的交集之外的元素
print(list1.difference(list2)) #运算符表达交集 c = t - s #子集
list3 = set([1,3,7]) #3是1的子集,返回为True
print(list3.issubset(list1))
#1是3的父集,返回为True
print(list1.issuperset(list3)) #3与4有没有交集(如果3和4没有交集则返回true)
list4 = set([5,6,8])
print(list3.isdisjoint(list4))
集合的增删
#集合的添加 无序的
list1.add(999)
list1.update([999,77,55])
print(list1) #集合的删除
print(list1.pop())#删除任意的,并返回删除的那个内容
print(list1.remove(44444))#删除不存在的会报错
list1.discard(999999)#删除不存在的不会报错
python学习day3------列表、元组、字符串操作的更多相关文章
- python学习笔记(二)、字符串操作
该一系列python学习笔记都是根据<Python基础教程(第3版)>内容所记录整理的 1.字符串基本操作 所有标准序列操作(索引.切片.乘法.成员资格检查.长度.最小值和最大值)都适用于 ...
- Python学习之路3 - 字符串操作&字典
本节内容: 常用的字符串处理. 格式化输出字符串. 字符串的替换. 字符串和二进制的相互转化. 字典的操作 字符串操作 常用的字符串处理 name = 'vector' print(name.capi ...
- 实验楼Python学习记录_挑战字符串操作
自我学习记录 Python3 挑战实验 -- 字符串操作 目标 在/home/shiyanlou/Code创建一个 名为 FindDigits.py 的Python 脚本,请读取一串字符串并且把其中所 ...
- python学习之列表元组,字典
list:元素性质可以不一致,元素还可以是list,可类似数组方法进行索引(也可以用负数索引,-1表示最后一个),可用.append('')进行动态增加,可用pop()删除最后一个或者pop(i)删除 ...
- python 学习分享-列表元组篇
1 列表(list) 下面的代码就是把一个变量赋值为列表 a=['laay','aay','ay','y'] 列表中存在索引,可以通过索引来访问列表中的值,也可以通过索引完成切片 print(a[0] ...
- 《python基础教程(第二版)》学习笔记 列表/元组(第2章)
<python基础教程(第二版)>学习笔记 列表/元组(第2章)序列中的下标从0开始x='ABC' ==> x[0]='A', x[1]='B', x[2]='C'负数索引从右边开始 ...
- Python学习3——列表和元组
一.通用序列操作——索引.切片.相加.相乘.成员资格检查 1.索引,正序从0开始为第一个元素,逆序从-1开始,-1为最后一个元素 >>> greeting[0] 'h' >&g ...
- 【python学习笔记】3.字符串使用
[python学习笔记]3.字符串使用 字符串是一种序列,素有标准的序列操作对字符串用样适用,字符串是不可以改变 格式化操作符,%,左侧是格式化字符串,右侧是被格式的值,可以是一个值.元组.字典 数值 ...
- python基础(五)列表,元组,集合
列表 在python中是由数个有序的元素组成的数据结构,每一个元素对应一个index索引来隐式标注元素在列表中的位置.是python中最常用的一种数据类型.需要注意的是列表中可以有重复相同的数据. 列 ...
- python3.4学习笔记(十五) 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
python3.4学习笔记(十五) 字符串操作(string替换.删除.截取.复制.连接.比较.查找.包含.大小写转换.分割等) python print 不换行(在后面加上,end=''),prin ...
随机推荐
- Java与算法之(1) - 冒泡排序
冒泡排序法的原理是,每次比较相邻的两个元素,如果它们的顺序错误就把它们交换过来. 例如对4 3 6 2 7 1 5这7个数字进行从小到大的排序,从最左侧开始,首先比较4和3 因为是从小到大排序,4和3 ...
- 常用OJ名字+地址(自用)
常用OJ名字+地址 不定期更新,自己用,有补充的也可以给我说说哈. 中文 openjudge 地址:openjudge.cn 说明:北大提供的一个平台,学校可申请小组: 比较好的小组: 计算概论:ic ...
- OllyDBG 破解入门教程
一.OllyDBG 的安装与配置OllyDBG 版的发布版本是个 ZIP 压缩包,只要解压到一个目录下,运行 OllyDBG.exe 就可以了.汉化版的发布版本是个 RAR 压缩包,同样只需解压到一 ...
- MVC学习笔记(分享)
一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要的jar包. 2.添加Web.xml配置文件中关于SpringMVC的配置 <!--conf ...
- oracle分页查询及原理分析(总结)
oracle分页查询及原理分析(总结) oracle分页查询是开发总为常用的语句之一,一般情况下公司框架会提供只需套用,对于增删改查而言,查是其中最为关键也是最为难的一块,其中就有使用率最高的分页查询 ...
- [国嵌笔记][025][ARM指令分类学习]
算术和逻辑指令 1.mov 格式:mov {条件}{s} <dest>, <op> 作用:把一个值从一个地方移动到另一个地方,<dest>必须是寄存器 示例: @m ...
- Thinkphp5+PHPExcel实现批量上传表格数据功能
http://www.jb51.net/article/129262.htm 1.首先要下载PHPExcel放到vendor文件夹下,我的路径是:项目/vendor/PHPExcel/,把下载的PHP ...
- 如何让phpmyadmin输入密码再进入
分类: wamp 对于很多不熟悉PHP环境安装的朋友来说,用集成环境可以更快的上手,更方便的搭建PHP的运行环境,但是,WAMP的集成环境仅仅是将底层基础工作做好了,有些个别关键的配置操作并没有集成到 ...
- dede被注入后台提示用户名不存在解决方法
如果已经发现/data,有很长一个txt记事本,说明已经被其他人SQL注入了,或是已经有人进行尝试SQL注入了了. 记事儿本如:75252sdaswfdfsfq538ef2ad3556_safe.tx ...
- 机器学习——kNN(1)基本原理
=================================版权声明================================= 版权声明:原创文章 禁止转载 请通过右侧公告中的“联系邮 ...