美文网首页
基础·数据容器·列表&元组

基础·数据容器·列表&元组

作者: 三米板 | 来源:发表于2020-03-14 16:55 被阅读0次

Python基础教程

类型

数据集合包括:列表,元组,字典

列表=============================

定义

列表是以[]中括号包起来的一种数据集合,列表可以存储任何的数据类型。

>>> a=[1,2,'liu',[1,2,3]]
>>> print(a)
[1, 2, 'liu', [1, 2, 3]]

但凡能被for循环遍历的数据类型,均可传递list()转换为列表类型,list()将会像for一样遍历数据类型的每一个元素然后放到列表中

>>> print(list('str'))  # 字符串
['s', 't', 'r']
>>> print(list((1, 2, 3)))  # 元组
[1, 2, 3]
>>> print(list({1, 2, 3, 4}))  # 数组
[1, 2, 3, 4]
>>> print(list([1, 2, 3, 4]))  # 列表
[1, 2, 3, 4]
>>> print((list({'name': 'yyh', 'age': 18})))  # 字典
['age', 'name']
>>> 

长度

计算长度和字符串长度一样

>>> len(mylist)
10

查找

支持索引值定位,且支持负数,负数为从右往左索引

>>> mylist=[1,2,3,4,5,6]
>>> print(mylist[3])
4
>>> print(mylist[-3])
4

切片
通常一个切片操作要提供三个参数 [start_index: stop_index: step]

start_index是切片的起始位置
stop_index是切片的结束位置(不包括)
step可以不提供,默认值是1,步长值不能为0,不然会报错ValueError。

当 step 是正数时,以list[start_index]元素位置开始, step做为步长到list[stop_index]元素位置(不包括)为止,从左向右截取,start_index和stop_index不论是正数还是负数索引还是混用都可以,但是要保证 list[stop_index]元素的【逻辑】位置
必须在list[start_index]元素的【逻辑】位置右边,否则取不出元素。

有必要说三遍:
取值不包含stop_index的元素!
取值不包含stop_index的元素!
取值不包含stop_index的元素!

#start和stop都是正数
>>> mylist=[0,1,2,3,4,5,6,7,8,9]
>>> mylist[1:2]#从index=1开始取值,取到下标为2之前为止,注意不包括index=2
[1]
>>> mylist[0:2]#从index=0开始取值,取到下标为2之前为止,注意不包括index=2
[0, 1]
#start为正,stop为负,stop为负的时候,从右侧开始数,于是就能达到取中间数据的效果。(如效果:给一个List,把首尾的元素去除并打印:用 mylist[1,-1] 即可)
>>> mylist[1:-1]
[1, 2, 3, 4, 5, 6, 7, 8]
>>> mylist[2:-2]
[2, 3, 4, 5, 6, 7]
>>> mylist[1:-1]
[1, 2, 3, 4, 5, 6, 7, 8]
#解释:
#mylist[1:-1]的原理,start_index=1说明,要从1的位置开始取
#而-1呢?代表的是最右侧,即最末尾的一个元素位置。本例中指“9”这个元素的坐标
#而stop_index取出的值是不包含它所在的元素的。所以就取出了[1, 2, 3, 4, 5, 6, 7, 8]

还有一点我们上面已经明确提示:如果不指定第三个参数,步长就为1,必须在list[start_index]元素的【逻辑】位置右边,否则取不出元素
如下面的\color{red}{错误}例子:

>>> mylist=[0,1,2,3,4,5,6,7,8,9]
>>> mylist[-1:-2]
[]

咦?按我们的想法,在本示例中,开始位-1代表了9,而-2代表了结束位8,而且不包含结束位的值,那么是不是应该打印出9呢?而结果为什么是空值呢?
引入我们上面所说的:如果步长不指定,步长为1 , stop要保证逻辑位置在start的左边。
如果我们改成下面这样:

>>> mylist[-4:-2]
[6, 7]

如下逻辑
  0  \color{red}{|}  1 \color{red}{|} 2 \color{red}{|} 3 \color{red}{|} 4 \color{red}{|} 5 \color{red}{|} 6 \color{red}{|} 7 \color{red}{|} 8 \color{red}{|} 9  

[-10]\color{red}{|}[-9]\color{red}{|}[-8]\color{red}{|}[-7]\color{red}{|}[-6]\color{red}{|}[-5]\color{red}{|}[-4]\color{red}{|}[-3]\color{red}{|}[-2]\color{red}{|}[-1]

-4这个位置代表的是:-1(9),-2(8),-3(7),-4(6),则截取之后,起始一定是6
-2这个位置代表的是:-1(9),-2(8) , 而且最后一位不截取,则最后的结果就是[6,7]

但是如果我们用下面的取值:

>>> mylist[-2:-4]
[]

同样的,假如:
-2这个位置代表的是:-1(9),-2(8) 开始为8
-4这个位置代表的是:-1(9),-2(8),-3(7),-4(6) ,结束位为6
但是步长没指定,则打印出了[]
如果我们加上步长:-1,看一下

>>> mylist[-2:-4:-1]
[8, 7]

所以综上,步长其实控制了取值的方向
如果步长为正,则起始位一定要在结束位的左侧才能取到值
如果步长为负,则起始位一定要在结束位的右侧才能取到值(取到的值也将为逆序)

遍历

mylist = [1,2,3,4,5]
for i in range(len(mylist)):
    print(mylist[i])
包含操作 in 和 not in
my_list = [1, 3, 5, 7, 9]
for i in range(10):
    if i in my_list:
        print(str(i)+"in list")
    if i not in my_list:
        print(str(i)+"not in list")
#打印结果
0not in list
1in list
2not in list
3in list
4not in list
5in list
6not in list
7in list
8not in list
9in list

追加 append()和extend()

append()是追加
extend()是扩展追加
怎么理解?我们看例子吧

>>> mylist=[1,2,3]
>>> mylist.append([4,5,6])
>>> mylist
[1, 2, 3, [4, 5, 6]]
>>> mylist=[1,2,3]
>>> mylist.extend([4,5,6])
>>> mylist
[1, 2, 3, 4, 5, 6]

删除pop(),remove(),del

pop()

>>> mylist=[1,2,3]
>>> mylist.pop()
3
>>> mylist
[1, 2]

remove(<元素>)

>>> mylist=['a','b','c']
>>> mylist.remove('b')
>>> mylist
['a', 'c']

del

>>> mylist
['a', 'b', 'c']
>>> del mylist[2]
>>> mylist
['a', 'b']

插入insert()

>>> mylist=[1,2,3]
>>> mylist.insert(2,9)
>>> mylist
[1, 2, 9, 3]

两个列表合并

两个列表合并,我们也可以使用extend()来实现,如下:

>>> mylist=[1,2,3]
>>> mytp=[4,5,6]
>>> mylist.extend(mytp)
>>> mylist
[1, 2, 3, 4, 5, 6]

其它的方法

reverse()#元素反转
sort()#元素排序

元组=============================

介绍:
元组和列表类似,只不过列表使用的是小括号来定义,而且定义后的元素不可变(这亲就代表有些更改类的操作在元组中将受到一定限制)。

定义

>>> mylist=(1,2,3)
>>> mylist
(1, 2, 3)
>>> mylist[2]
3

更多内容可以在使用时搜索,这里不再做更多介绍。

相关文章

  • 基础·数据容器·列表&元组

    Python基础教程 类型 数据集合包括:列表,元组,字典 列表=========================...

  • 第005篇:元组与数字

    1、元组 1.1、什么是元组(tuple) 元组就是不可变的列表 元组是容器型数据类型,将()作为容器的标志,里面...

  • 2018-07-20 day 5

    一、列表 列表、字典、元组、集合都是序列,都是容器类型的数据类型 列表(list):存储多个数据的一种容器类型.里...

  • 第三章 容器 ---->列表、元组、字典、set

    集合容器:列表 元组 列表和元组相互转换 字典 set 列表: 用一对方括号[]表示 列表中可以存储任何类型的数据...

  • 2019-07-14

    # **容器类型:列表和元组(list and tuple)** ## **数据收纳盒:** - 用来收纳数据对象...

  • Python 学习笔记 - 列表

    Python 容器(Collections) Python 有四种容器数据类型: 列表(List) 元组(Tupl...

  • py基础-列表、元组、字典以及集合

    Python基础篇 仅你 共享上次编辑时间: 7月 27, 2020 列表,元组,字典,集合列表:属于容器,可变,...

  • Python基础Day4—容器类型之元组、字典

    元组 — tuple 元组:也是一个容器类型,可以存储多个任意类型的数据,元组好比是一个只读的列表,只能获取数据不...

  • 数据结构

    序列(如列表和元组)、映射(如字典)以及集合(set)是三类主要的数据结构(也称为容器)。 序列(列表、元组和字符...

  • 01.03 笔记-元组

    元组 什么是元组(tuple) python提供的容器型数据类型,不可变并且有序的序列。(元组就是不可变的列表) ...

网友评论

      本文标题:基础·数据容器·列表&元组

      本文链接:https://www.haomeiwen.com/subject/ckhishtx.html