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)       增加

  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)       删:

  1. 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)       查

  1. 单个索引查

>>> 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

  1. 遍历有哪些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)]

小练习:

  1. 取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'

  7.求全部元素的和[1,2,1,2,3,3,3,3],提示:遍历
 

  8.求偶数元素的和[1,2,1,2,3,3,3,3],提示:切片
 
 

  9.统计一下所有数字出现的个数[1,2,1,2,3,3,3,3]
提示:字典
 
 
 
 
 
 

小知识:

  1. 切片倒取必须加步长吗?

答:是

例如: 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入门(五):切片列表元祖字典的更多相关文章

  1. Python学习笔记---切片 列表 元祖 字典 集合

    列表[1,2,3,2]#[] 元祖(1,2,3,2)#() 字典{1:2,3:2}#{} 集合{1,2,3,2}#{} 1,集合与列表的区别,集合里不能有重复元素 2.字典与集合的区别,都是用花括号表 ...

  2. python学习第八讲,python中的数据类型,列表,元祖,字典,之字典使用与介绍

    目录 python学习第八讲,python中的数据类型,列表,元祖,字典,之字典使用与介绍.md 一丶字典 1.字典的定义 2.字典的使用. 3.字典的常用方法. python学习第八讲,python ...

  3. python学习第七讲,python中的数据类型,列表,元祖,字典,之元祖使用与介绍

    目录 python学习第七讲,python中的数据类型,列表,元祖,字典,之元祖使用与介绍 一丶元祖 1.元祖简介 2.元祖变量的定义 3.元祖变量的常用操作. 4.元祖的遍历 5.元祖的应用场景 p ...

  4. python学习第六讲,python中的数据类型,列表,元祖,字典,之列表使用与介绍

    目录 python学习第六讲,python中的数据类型,列表,元祖,字典,之列表使用与介绍. 二丶列表,其它语言称为数组 1.列表的定义,以及语法 2.列表的使用,以及常用方法. 3.列表的常用操作 ...

  5. Python入门 [输出,注释,列表,元祖,集合,字典,if,while,for]

    print("Hello Python") #输出 ''' 多行注释 用 三个引号 ''' a=1 #赋值 变量首字母只能书字母下划线 第二个字符数字,字母,下划线 声明一个列表 ...

  6. Python基础5:列表 元祖 字典 集合

    [ 列表] 列表(list)是Python以及其他语言中最常用到的数据结构之一.Python使用使用中括号 [ ] 来解析列表. 列表是可变的(mutable)——即:可以改变列表的内容. 相关操作: ...

  7. Python基础5:列表 元祖 字典 集合 Json

    [ 列表] 列表(list)是Python以及其他语言中最常用到的数据结构之一.Python使用使用中括号 [ ] 来解析列表. 列表是可变的(mutable)——即:可以改变列表的内容. 相关操作: ...

  8. python 中的 字符串 列表 元祖 字典

    str 1 格式化输出 %法 第一种 %s+tuple %d+tuple name = input('请输入你的姓名:') age = input('请输入你的年龄:') hobby = input( ...

  9. Python学习day4 数据类型Ⅱ(列表,元祖)

    day4 知识补充&数据类型:列表,元祖 1.知识补充 1.编译型/解释型 编译型:在代码编写完成之后编译器将其变成另外一个文件教给你算计执行. 代表语言:Java,c,c++ ,c#, Go ...

随机推荐

  1. Spring Cloud 请求重试机制核心代码分析

    场景 发布微服务的操作一般都是打完新代码的包,kill掉在跑的应用,替换新的包,启动. spring cloud 中使用eureka为注册中心,它是允许服务列表数据的延迟性的,就是说即使应用已经不在服 ...

  2. gitlab部署步骤+汉化

    系统环境centos7 下载gitlab安装包 https://packages.gitlab.com/gitlab/gitlab-ce 我下载的版本是 gitlab-ce-11.1.4-ce.0.e ...

  3. dmi-ipmi

    api,cli,gui,tui,dmi(smbios),ipmi,bios,efi,uefi SMBIOS(System Management BIOS)是主板或系统制造者以标准格式显示产品管理信息所 ...

  4. vs2010安装的一些问题

    VS安装出现的问题一般如果出现了  基本就不会安装成功.问题出现的原因有:w7系统的版本,有些可能会安装失败,其次就是你卸载的时候不要把相应 的库及.net的库卸载  后面再安装就容易出错.这个是安装 ...

  5. centos 使用RPM包安装指定版本的docker-engine

    下面是拿安装docker-engine-1.10.3-1为例: wget https://yum.dockerproject.org/repo/main/centos/7/Packages/docke ...

  6. Azure CosmosDB (2) CosmosDB中的数据一致性

    <Windows Azure Platform 系列文章目录> 为了保证分布式数据库的高可用性和低延迟性,我们需要在可用性.延迟和吞吐量之间进行权衡. 绝大部分的商业分布式数据库,要求开发 ...

  7. Redis和Memcache区别,优缺点对比

    1. Redis和Memcache都是将数据存放在内存中,都是内存数据库.不过memcache还可用于缓存其他东西,例如图片.视频等等. 2.Redis不仅仅支持简单的k/v类型的数据,同时还提供li ...

  8. 使用nrm工具高效地管理npm源

    在使用npm时,官方的源下载npm包会比较慢,国内我们基本使用淘宝的源,如果公司内部搭建了一套npm私有仓库,公司内部的源不可能把npm官方的npm包都同步,所以需要切换npm源.如果使用npm/cn ...

  9. 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 # ...

  10. 京东返利渠道,自己拿返利,无需A推B操作

    京东返利渠道,自己拿返利,无需A推B操作,简单快捷方便 1.在微信小程序中搜索 “京东饭粒” 2.进入京东饭粒,进购物车下单(只能在购物车内下单返利) 3.收货后26天返京豆到你的京东账号中,”佛系返 ...