前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >3-序列、列表、元组

3-序列、列表、元组

作者头像
用户3106371
发布2018-09-12 10:11:41
7140
发布2018-09-12 10:11:41
举报
文章被收录于专栏:lzj_learn_notelzj_learn_note

序列

序列就是一堆数据元素的集合,并对每个元素进行编号。在Python中,字符串、列表、元组都属于序列,他们都具有一些特定的操作,如索引、切片、相加、相乘、in、长度、最大值和最小值。

下面以列表为例:

索引

索引代表元素在列表中的位置,从0开始,以此类推

>>>g=[1,2,3,4,5]
>>>g[0]
1

#也可以从右开始索引,最右边的元素索引值-1, 从右往左递减
>>>g[-1]
5

在python中,从左往右索引称为正索引,从右往左称为负索引. 使用负索引, 从最后一个元素开始计数,最后一个元素的位置编号为-1

切片

使用切片可以对列表一定范围的元素进行访问

切片的语法:[起始:结束:步长]

注意:

  • 选取的区间属于左闭右开型,即从"起始"位开始,到"结束"位的前一位结束(不包含结束位本身)。
  • 如果起始位不写,则代表从第0位开始; 结束位不写,则表示直到最后一位
  • 如果切片起始索引比结束索引晚出现在列表中, 结果就是个空列表
  • 步长不能为0,默认步长为1
  • 正数步长,列表从头开始向右获取元素,直到最后一个元素,起始索引必须先于结束索引
  • 负数步长,列表从尾开始向左获取元素,直到第一个元素,起始索引必须晚于结束索引
>>>g=[1,2,3,4,5]
#取出索引为1和2的元素
>>>g[1:3]
[2,3]

#也可以使用负索引
#取出最后两个元素
>>>g[-2:]
[4,5]

#取出索引为1开始 到 倒数第2个
>>>g[1:-1]
[2,3,4]

#取出整个列表元素
>>>g[:]
[1,2,3,4,5]

#空列表,起始所以-3倒数第三个元素,0第一个元素,
#倒数第三个元素比第一个元素在列表中,所以是个空列表
>>>g[-3:0]
[]

#设置步长为2
>>>g[::2]
[1,3,5]
#步长-2
>>>g[::-2]
[5,3,1]

>>>g[::-1]
[5,4,3,2,1]

>>>g[1:4:2]
[2,4]

>>>g[-1:0:-2]#相当于先取出倒数第一个到第二个元素[5,4,3,2],然后按照步长2开始取数
[5,3]

相加

两个列表可以通过+号连接起来,生成一个新的列表

>>>[1,2]+[3,4]
[1,2,3,4]

乘法

一个数字n乘以一个列表,会生成一个新的列表,新列表就是原列表重复n次.

>>>[1,2]*2
[1,2,1,2]

in

可以判断序列中是否存在某个元素

>>>a=[1,2,3]
>>>1 in a
True

>>>'a' in 'abc'
True

#数字类型不能再字符串类型中通过in判断
>>>1 in 'abc'
Traceback (most recent call last):
  File "<input>", line 1, in <module>
TypeError: 'in <string>' requires string as left operand, not int

长度、最大最小值

>>>a=[2,3,4,5]
>>>len(a)
4

>>>max(a)
5

>>>min(a)
2

List 列表

list是一种有序的集合, 且列表内的值是可变的

除了上述序列的一些操作外,列表还有如下一些操作。

list()函数

可以直接将其他序列转换为列表

>>>a=list('abc')
>>>a
['a','b','c']

列表的赋值

一个列表中的值可以包含不同的数据类型

>>>a=[1,2,'c','d']
>>>a[0]
1
>>>a[2]
'c'
>>>a[1]=3
>>>a
[1,3,'c','d']

>>>a[4]=3
Traceback (most recent call last):
  File "<input>", line 1, in <module>
IndexError: list assignment index out of range
#报错,索引超出了列表的最大索引值
分片赋值
>>>a=[1,2,3,4]
#将最后两个元素重新赋值
>>>a[2:]=[5,6]
>>>a
[1,2,5,6]

#替换最后一个元素 ,并增加其他元素
>>>a[-1:]=[7,8,9]
>>>a
[1,2,5,7,8,9]

#使用分片赋值在第三个位置插入[3,4]
>>>a[2:2]=[3,4]
>>>a
[1,2,3,4,5,7,8,9]

#使用分片赋值删除最后三个元素
>>>a[-3:]=[]
>>>a
[1,2,3,4,5]

列表的嵌套

>>>a=[1,2]
>>>b=[3,4]
>>>c=[a,b]
>>>c
[[1,2],[3,4]]

添加元素

  • append() 向列表的末尾添加元素 >>>a=[1,2,3] >>>a.append(4) >>>a [1,2,3,4]
  • extend() 通过extend()可以将另一个集合中的元素逐一添加到列表中 >>> a = [1, 2] >>> b = [3, 4] >>> a.append(b) >>> a [1, 2, [3, 4]] >>> a.extend(b) >>> a [1, 2, [3, 4], 3, 4] 与列表相加的区别是: 列表相加是返回一个新的列表,不会修改原有的列表, 而extend()是直接修改操作的列表
  • insert() insert(index, object) 在指定位置index前插入元素object >>> a = [0, 1, 2] >>> a.insert(1, 3) >>> a [0, 3, 1, 2]

删除元素

  • del 根据下标进行删除 >>>a=[1,2,3,4] >>>del a[1] >>>a [1,3,4]
  • pop() 默认删除最后一个元素 并返回该元素 >>>a=[1,2,3,5,'a',4] >>>a.pop() 4 >>>a [1,2,3,5,'a'] #传参value >>>a.pop('a') 'a' >>>a [1,2,3,5] #传元素下标 >>>a.pop(0) 1 >>>a [2,3,5]
  • remove() 根据元素的值进行删除 ,没有返回值 >>>a=[1,2,3,4] >>>a.remove(3) >>>a [1,2,4] #移除不存在列表中的元素,报错 >>>a.remove(5) Traceback (most recent call last): File "<input>", line 1, in <module> ValueError: list.remove(x): x not in list

排序

  • reverse 用于反向列表中的元素 >>>a=[1,2,3] >>>a.reverse() >>>a [3,2,1]
  • reversed 反向列表中的元素,返回一个迭代对象,原列表不变 >>>a=[1,2,3] >>>list(reversed(a)) [3,2,1] >>>a [1,2,3]
  • sort 语法:list.sort(func); func为可选参数,如果指定参数,就使用指定的方法进行排序 sort()方法中还有key和reverse两个可选参数 >>>a=[1, 4, 2, 3] >>> a.sort() >>> a [1, 2, 3, 4] >>> a.sort(reverse=True) >>> a [4, 3, 2, 1] >>>b=['cda','a','dafd','as'] >>>b.sort(key=len)#按照字符串长度排序 >>>b ['a','as','cda','dafd']
  • sorted 返回一个排序后的新的列表,原列表不变 >>>a=[1, 4, 2, 3] [1, 2, 3, 4] >>> sorted(a) >>> a [1, 4, 2, 3]

清空列表

clear()方法用于清空列表, 类似于 del a[:]

>>>a=[1, 4, 2, 3]
>>>a.clear()
>>>a
[]

复制列表

copy()方法用于复制列表 类似于a[:]

>>>a=[1, 4, 2, 3]
>>>b=a.copy()
>>>b
[1, 4, 2, 3]

>>>c=a[:]
>>>c
[1, 4, 2, 3]

#拷贝并不是指向原来的列表,而是实实在在的创建一份相同的列表
>>>a[1]=5
>>>a
[1, 5, 2, 3]
>>>b
[1, 4, 2, 3]
>>>c
[1, 4, 2, 3]

元素查找

  • in, not in
    • in(存在),如果存在那么结果为true,否则为false
    • not in(不存在),如果不存在那么结果为true,否则false
  • index 用于从列表中找出某个值第一个匹配的索引位置 index(a, beg=0, end=len(string)):在指定范围[beg,end)查找a >>>a=[2,3,4,5] >>>a.index(2) 0 #1不存在于列表中,则会报错 >>>a.index(1) Traceback (most recent call last): File "<input>", line 1, in <module> ValueError: 1 is not in list
  • count 用于统计某个元素在列表中出现的次数 >>>a=[2,3,4,5,2] >>>a.count(2) 2

Tuple 元组

元组与列表相似, 不同之处在于元组的元素不能修改。元组使用小括号,列表使用方括号。

需要注意的是:当元组只包含一个元素值时,必须在括号中的元素后加一个逗号,如:

>>>(1,)
(1,)

#空元组
>>>()

除了上述序列的一些操作外,列表还有如下一些操作。

tuple()函数

tuple()与list()功能基本一样,将序列转换为元组

>>>tuple('abc')
('a','b','c')

>>>tuple([1,2,3])
(1,2,3)

元组访问

>>>t=(1,'a',2)
>>>t[1]
'a'

元组修改

>>>tup1 = (12, 34.56);
>>>tup2 = ('abc', 'xyz')
 
# 以下修改元组元素操作是非法的。
# tup1[0] = 100
 
# 创建一个新的元组
>>>tup1 + tup2;
(12, 34.56, 'abc', 'xyz')

元组删除

元组中的元素值是不允许删除的,使用del语句来删除整个元组

>>>tup = ('Google', 'Runoob', 1997, 2000)
>>>del tup;
>>>tup
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'tup' is not defined

count, index

index和count与字符串和列表中的用法相同

#index(a, beg=0, end=len(string)):在指定范围[beg,end)查找a
>>> a = ('a', 'b', 'c', 'a', 'b')
>>> a.index('a', 1, 3) # 注意是左闭右开区间
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: tuple.index(x): x not in tuple
>>> a.index('a', 1, 4)
3
>>> a.count('b')
2
>>> a.count('d')
0
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.07.27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 序列
    • 索引
      • 切片
        • 相加
          • 乘法
            • in
              • 长度、最大最小值
              • List 列表
                • list()函数
                  • 列表的赋值
                    • 分片赋值
                  • 列表的嵌套
                    • 添加元素
                      • 删除元素
                        • 排序
                          • 清空列表
                            • 复制列表
                              • 元素查找
                              • Tuple 元组
                                • tuple()函数
                                  • 元组访问
                                    • 元组修改
                                      • 元组删除
                                        • count, index
                                        领券
                                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档