python入门(五):切片列表元祖字典
1.切片
针对序列,使用切片可以获得我们想要的内容
序列:字符串、列表、元祖
特点:可以使用坐标获取某一个值.坐标是从0开始算
>>> s="0123456789"
>>> print(s[0]) #坐标是从0开始算
0
>>> print(s[9])
9
>>> s=[0,1,2,3,4,5]
>>> print(s[2]) #获取列表的第三个元素
2
>>> print(s[4]) #获取列表的第五个元素
4
>>> s=(1,2,3,4,5)
>>> print(s[1]) #获取元祖的第二个元素
2
>>> print(s[4]) #获取元祖的第五个元素
5
>>> s
(1, 2, 3, 4, 5)
>>> print(s[-1]) #取最后一个元素
5
>>> print(s[-2]) #取倒数第二个元素
4
>>> list(range(11))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> s=list(range(11))
>>> s
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> print(s[len(s)//2]) #列表s的长度除以2的商为要取元素的坐标
5
>>> s[5.5]
Traceback (most recent call last): #坐标必须是整数,否则会报错
File "<stdin>", line 1, in <module>
TypeError: list indices must be integers or slices, not float
类型错误:列表索引必须是整数或者片,不能是浮点数
切片:start_pos , end_pos(开区间,不包含), step
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> a[1:3:1] #3是开区间,步长是1
[1, 2]
>>> a[0:10:2]
[0, 2, 4, 6, 8]
>>> a[0:10:3]
[0, 3, 6, 9]
>>> a[::5] #如果不写起始结束,默认从0开始,到最后结束
[0, 5, 10]
>>> a[::] #如果加上步长,全都不写,模式从0开始,步长是0
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> a[-1:-4] #未写步长,步长默认为1,-1+1=0,不在-4之内,所
[] #以结果为空
>>> a[-1:-4:-1] #步长为-1,可依次输出。
[10, 9, 8]
>>> a[::-2] #如果步长为负,输出结果也为先显示最后的数据。
[10, 8, 6, 4, 2, 0]
2.列表,可变类型
声明一个列表:
a=[];
a=[1,1.1,”a”,[1,2],(1,2,3)]
判断一下列表的类型:isinstance(a,list)
>>> isinstance(a,list)
True
1) 增加
- append #在最后的位置加
>>> a=[]
>>> a.append(1)
>>> a
[1]
>>> a.append("a")
>>> a
[1, 'a']
>>> a.append(1+1j)
>>> a
[1, 'a', (1+1j)]
>>> a=[1,2,3]
>>> b=[4,5,6]
>>> a.append(b) #会将列表b变成a的一个元素
>>> a
[1, 2, 3, [4, 5, 6]]
>>> a.extend(b) #extend会将列表b拆开,融合到list a中
>>> a
[1, 2, 3, [4, 5, 6], 4, 5, 6]
2.insert #在指定位置加
>>> a.insert(0,3) #在第0个元素的位置加3
>>> a
[3, 1, 'a', (1+1j)]
>>> a.insert(4,"liuyujing") #在第四个元素的位置加
>>> a
[3, 1, 'a', (1+1j), 'liuyujing']
2) 删:
- del删除整个列表
>>> del a
>>> a
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined #删除后在调用,提示未定义
2.del删除指定位置的元素
a=[1, 2, 3]
>>> del a[2] #删除a中坐标为2的元素
>>> a
[1, 2]
>>> del a[-1] #删除最后一个元素
>>> a
[1]
>>> a=[1,2,3,4,5]
>>> del a[2:5:2] #删除指定范围,且有步长的元素
>>> a
[1, 2, 4]
3.remove指定元素
>>> a=[1,2,3]
>>> a.remove(1) #删除列表a中的值1
>>> a
[2, 3]
>>> a.remove(4) #a中不存在4,但是要删除4时,会报错
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: list.remove(x): x not in list
3) 改 #其实就是指定位置赋值
a=[1, 2, 4]
>>> a[0]=100
>>> a
[100, 2, 4]
>>> a[10]=1 #修改超过范围的坐标的值,会报错
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list assignment index out of range
>>> [1,2,3]+[4,5,6] #两个list相加,合并成一个list
[1, 2, 3, 4, 5, 6]
>>> [1,2,3]*3 #相乘,值不变,复制3次
[1, 2, 3, 1, 2, 3, 1, 2, 3]
4) 查
- 单个索引查
>>> a[0]
100
2.切片查
>>> a[:]
[100, 2, 4]
3.遍历
>>> for i in a:
... print(i)
...
100
2
4
>>> max([1,2,3]) #查看list中的最大值
3
>>> min([1,2,3]) #查看list中的最小值
1
>>> len([1,2,3]) #查看list的长度
3
>>> max([1,2,3,[4,5,6]]) #list中有子list,无法查看最大值
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: '>' not supported between instances of 'list' and 'int'
5) pop #弹出,且删掉指定位置的值
a=[100, 2, 4]
>>> a.pop(0) #弹出元素0
100 #元素0为100
>>> a
[2, 4] #已删除a中的100元素
6) count计数
>>> a=[1,2,1,3,5]
>>> a.count(a) #列表a中a的个数为0
0
>>> a.count(1) #列表a中1的个数为2个
2
>>> a=[1,2,1,3,5,a]
>>> a.count(a)
0
>>> a=[1,2,1,3,5,"a"]
>>> a.count(a)
0
>>> a.count("a")
1
3.元祖
与列表的区别在于元祖不能改,不可变类型
>>> a=()
>>> type(a)
<class 'tuple'>
>>> a.append("1") #元祖不支持增
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'tuple' object has no attribute 'append'
>>> a=1,2 #定义a时,并没有加(),但实际也是元祖
>>> type(a) #当元素的个数>1时
<class 'tuple'>
>>> a=(1) #定义a时,即使有(),但也不是元祖类型
>>> type(a) #当元素的个数=1时
<class 'int'>
>>> a=(1,) #如果就想定义一个元素的元祖,需加,
>>> type(a)
<class 'tuple'>
>>> a=(0,1,2,3,[4,5,6]) #元祖支持查
>>> a[0] #单个索引查
0
>>> a[0:3] #切片查
(0, 1, 2)
>>> a[3:6]
(3, [4, 5, 6])
>>> a[4]
[4, 5, 6]
>>> a[4][-1] #取出元祖中列表的最后一个元素
6
4.字典,可变类型
>>> d={}
>>> type(d)
<class 'dict'>
>>> isinstance(d,dict)
True
1) 增
>>> d[1]="a" #key为1,value为”a”
>>> d
{1: 'a'} #key必须为不可变类型
>>> d[[1]]="a" #定义字典时,key被定义了可变类型list会报错
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
>>> d[{1:2}]=1 #key必须为不可变类型
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'dict'
>>> d[(1,2)]=1 #元祖,字符串,数字等均可作为key
>>> d
{(1, 2): 1}
2) 删
>>> d
{1: 2}
>>> del d[1] #写明key值,会删除该key值和value值,字典依然存在
>>> d
{}
>>> d[1]="a"
>>> d
{1: 'a'}
>>> del d #删除字典,且不带key值,会删除整个字典
>>> d
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'd' is not defined #d未定义
3) 改
>>> d[1]=1
>>> d
{1: 1}
>>> d[1]=2 #当两个key值相同,但value不同时,会替换旧value
>>> d #所以字典的key会自动替重
{1: 2}
4) 查
>>> d=dict(a=1,b=2,c=3) #快速生成字典的一个表达式
>>> d
{'a': 1, 'b': 2, 'c': 3} #a,b,c均有“”
>>> d=dict("a"=1,"b"=2,"c"=3)
File "<stdin>", line 1
SyntaxError: keyword can't be an expression
- 遍历有哪些key值
>>> for i in d: #平常遍历的方法遍历字典时,默认遍历的是key值
... print(i)
...
a
b
c
>>> for i in d.keys(): #d.keys(),遍历key,注意keys后有()
... print(i)
...
a
b
c
2.遍历有哪些values值
>>> for i in d.values():
... print(i)
...
1
2
3
3.同时遍历有哪些key值,有哪些value值
>>> for k,v in d.items(): #d,items(),同时遍历key和value
... print(k,":",v) #items,指的是取一对值
...
a : 1
b : 2
c : 3
>>> list(d.items())
[('a', 1), ('b', 2), ('c', 3)]
小练习:
- 取a=[0,1,2,3,4,5,6,7,8,9,10]中的6,7,8,9这些元素
>>> a[6:9]
[6, 7, 8] #开区间,9不包括,所以错误
>>> a[6:10]
[6, 7, 8, 9]
2.取a=[0,1,2,3,4,5,6,7,8,9,10]中的0,5,10这些元素
>>> a[0:10:5]
[0, 5] #开区间,10不包括,所以错误
>>> a[0:11:5]
[0, 5, 10]
3.取a=[0,1,2,3,4,5,6,7,8,9,10]中,从元素5到元素10步长为3的元素。
>>> a[5:11:3]
[5, 8]
>>> a[5::3]
[5, 8]
4.取a=[0,1,2,3,4,5,6,7,8,9,10]中,倒取取出10,8,6,4这几个元素
>>> a[-1:-8:-2]
[10, 8, 6, 4]
5.s=”gloryroad is good!”,取出road和good中的oo,并拼成字符串
>>> s[5:9]+s[14:16] #切片的使用范围是字符串,列表,元祖!!
'roadoo'
>>> s[5:9]+s[-3:-5:-1] #正数+倒数
'roadoo'
6.s='gloryroad is good!',倒序输出gloryroad
>>> s[8::-1] #从前开始数坐标
'daoryrolg'
>>> s[-10::-1] #从后开始数坐标
'daoryrolg'
8.求偶数元素的和[1,2,1,2,3,3,3,3],提示:切片
9.统计一下所有数字出现的个数[1,2,1,2,3,3,3,3]
提示:字典
小知识:
- 切片倒取必须加步长吗?
答:是
例如: a=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> a[-4:-1] #这个步长默认为1,可以取出,-4在前,但是是正取!
[7, 8, 9]
2.切片结束的坐标可超范围,不会报错
>>> s='gloryroad is good!'
>>> s[20] #提示超范围
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: string index out of range
>>> s[5:20] #切片时,结尾的位置超范围不会报错,直至取出最后
'road is good!' #一个元素
3.切片开始与结束的位置坐标可超范围,不会报错
>>> s[20:25] #输出结果为空,但是未报错
''
4.元祖包括了可变类型的时候是可以更改的
>>> a=(1,[1])
>>> a[1].append("a") #这个元祖中的a[1]是列表,便可对a[1]进行更改
>>> a
(1, [1, 'a'])
>>> a[1].append(1+1j)
>>> a
(1, [1, 'a', (1+1j)])
可变类型有list和dict等,字符串是不可变的
5.字符串不可变的原因:只要更改,存储位置发生变化,实际是两个不同的字符串。
>>> s="abc"
>>> id(s)
2448316775536 #最初s的id是2448316775536
>>> s=s+"dd"
>>> id(s) #对s进行更改后,id是2448317718064
2448317718064
综上,字符串不是说进行了更改,而是生成了一个新的字符串。
python入门(五):切片列表元祖字典的更多相关文章
- Python学习笔记---切片 列表 元祖 字典 集合
列表[1,2,3,2]#[] 元祖(1,2,3,2)#() 字典{1:2,3:2}#{} 集合{1,2,3,2}#{} 1,集合与列表的区别,集合里不能有重复元素 2.字典与集合的区别,都是用花括号表 ...
- python学习第八讲,python中的数据类型,列表,元祖,字典,之字典使用与介绍
目录 python学习第八讲,python中的数据类型,列表,元祖,字典,之字典使用与介绍.md 一丶字典 1.字典的定义 2.字典的使用. 3.字典的常用方法. python学习第八讲,python ...
- python学习第七讲,python中的数据类型,列表,元祖,字典,之元祖使用与介绍
目录 python学习第七讲,python中的数据类型,列表,元祖,字典,之元祖使用与介绍 一丶元祖 1.元祖简介 2.元祖变量的定义 3.元祖变量的常用操作. 4.元祖的遍历 5.元祖的应用场景 p ...
- python学习第六讲,python中的数据类型,列表,元祖,字典,之列表使用与介绍
目录 python学习第六讲,python中的数据类型,列表,元祖,字典,之列表使用与介绍. 二丶列表,其它语言称为数组 1.列表的定义,以及语法 2.列表的使用,以及常用方法. 3.列表的常用操作 ...
- Python入门 [输出,注释,列表,元祖,集合,字典,if,while,for]
print("Hello Python") #输出 ''' 多行注释 用 三个引号 ''' a=1 #赋值 变量首字母只能书字母下划线 第二个字符数字,字母,下划线 声明一个列表 ...
- Python基础5:列表 元祖 字典 集合
[ 列表] 列表(list)是Python以及其他语言中最常用到的数据结构之一.Python使用使用中括号 [ ] 来解析列表. 列表是可变的(mutable)——即:可以改变列表的内容. 相关操作: ...
- Python基础5:列表 元祖 字典 集合 Json
[ 列表] 列表(list)是Python以及其他语言中最常用到的数据结构之一.Python使用使用中括号 [ ] 来解析列表. 列表是可变的(mutable)——即:可以改变列表的内容. 相关操作: ...
- python 中的 字符串 列表 元祖 字典
str 1 格式化输出 %法 第一种 %s+tuple %d+tuple name = input('请输入你的姓名:') age = input('请输入你的年龄:') hobby = input( ...
- Python学习day4 数据类型Ⅱ(列表,元祖)
day4 知识补充&数据类型:列表,元祖 1.知识补充 1.编译型/解释型 编译型:在代码编写完成之后编译器将其变成另外一个文件教给你算计执行. 代表语言:Java,c,c++ ,c#, Go ...
随机推荐
- Spring Cloud 请求重试机制核心代码分析
场景 发布微服务的操作一般都是打完新代码的包,kill掉在跑的应用,替换新的包,启动. spring cloud 中使用eureka为注册中心,它是允许服务列表数据的延迟性的,就是说即使应用已经不在服 ...
- gitlab部署步骤+汉化
系统环境centos7 下载gitlab安装包 https://packages.gitlab.com/gitlab/gitlab-ce 我下载的版本是 gitlab-ce-11.1.4-ce.0.e ...
- dmi-ipmi
api,cli,gui,tui,dmi(smbios),ipmi,bios,efi,uefi SMBIOS(System Management BIOS)是主板或系统制造者以标准格式显示产品管理信息所 ...
- vs2010安装的一些问题
VS安装出现的问题一般如果出现了 基本就不会安装成功.问题出现的原因有:w7系统的版本,有些可能会安装失败,其次就是你卸载的时候不要把相应 的库及.net的库卸载 后面再安装就容易出错.这个是安装 ...
- centos 使用RPM包安装指定版本的docker-engine
下面是拿安装docker-engine-1.10.3-1为例: wget https://yum.dockerproject.org/repo/main/centos/7/Packages/docke ...
- Azure CosmosDB (2) CosmosDB中的数据一致性
<Windows Azure Platform 系列文章目录> 为了保证分布式数据库的高可用性和低延迟性,我们需要在可用性.延迟和吞吐量之间进行权衡. 绝大部分的商业分布式数据库,要求开发 ...
- Redis和Memcache区别,优缺点对比
1. Redis和Memcache都是将数据存放在内存中,都是内存数据库.不过memcache还可用于缓存其他东西,例如图片.视频等等. 2.Redis不仅仅支持简单的k/v类型的数据,同时还提供li ...
- 使用nrm工具高效地管理npm源
在使用npm时,官方的源下载npm包会比较慢,国内我们基本使用淘宝的源,如果公司内部搭建了一套npm私有仓库,公司内部的源不可能把npm官方的npm包都同步,所以需要切换npm源.如果使用npm/cn ...
- CentOS 7.2 下nginx SSL证书部署的方法(使用crt以及key 配置)
转自:https://www.jb51.net/article/107350.htm 环境 系统环境:CentOS6.7 nginx version: nginx/1.8.1 证书 ? 1 2 3 # ...
- 京东返利渠道,自己拿返利,无需A推B操作
京东返利渠道,自己拿返利,无需A推B操作,简单快捷方便 1.在微信小程序中搜索 “京东饭粒” 2.进入京东饭粒,进购物车下单(只能在购物车内下单返利) 3.收货后26天返京豆到你的京东账号中,”佛系返 ...