听说你也要自学python,看这就够了(二)

这集我们和大家一起了解一下python的数据结构之(列表和数组)

对于这两个概念我个人自学完的感觉就是C语言里的数组和被锁死的数组。哈哈,这是我个人观点!当然,这里的数组中的元素不只是数,而是元素。所以python把他换了名字:列表和元组,但是理解起来有c基础的同学可以假想他是一个抽象数组,就容易理解多了。
言归正传,这一更,我们走进列表和元组!

目录

2.1序列概述
2.2通用的序列操作
2.3列表:python的主力将领
2.4元组:莫得感情的列表(莫挨老子)

2.1 序列概述

先说一下python的序列吧,python有很多序列,这一章只是介绍最常见的两种:列表元组。还有一种重要的叫字符串,这个我们之后会详细介绍.
一般我们在处理系列值时序列很有用,比如某某某的信息数据。

>>>anchen = ['sun','18','180']
>>>dudo = ['dodo','20','169']
就像这样,我们可以利用列表来存储一系列信息,姓名,年龄,身高等等

甚至序列还可以存放其他列表:

>>>couple = [anchen,dudo]
>>>couple
[['sun','18','180'],['dodo','20','169']]

小小剧透一下后面内容:python里有一概念叫容器:那就是可包含其他对象的对象。有两种主要容器叫:序列(列表、元组、字符串)和映射(字典),序列中每个元素都有编号,映射中每个元素都有名称:。还有一种特殊容器既不是序列又不是映射,它叫集合,后面的学习历程中会有一部分详细讨论。

2.2通用的序列操作

有几种操作适用于所有序列,包括索引、切片、相加、相乘和成员资格检查,另外还有提供了一些内置函数,可用于确定序列长度,以及找出序列中最大和最小的元素。迭代操作也很重要,在以后的章节中会有详细讲述迭代操作。

2.2.1 索引(indexing)

序列中所有元素都有编号-----从0开始递增。就像是c语言里数组的访问一样:
C语言:

#include<stdio.h>
int main()
{
    char a[20];
    scanf("%s",&a);
    printf("%c",a[3]);
    return 0;
}

python:

>>>anchen = 'abcde'
>>>anchen[0]
'a'

这些都算是索引。但是python的索引不止这些功能,咱们还可以这么玩:

>>>anchen[-1]
'e'
>>>anchen[-3]
'c'

大家可能也开始好奇负数索引该怎么玩,下面我们就给大家详细图解一下负数索引

anchen = 'abcde'
正数时:'a , b , c , d , e'
索引下标:0   1   2   3   4
负数时:'a , b , c , d , e'
索引下标:-5 -4  -3  -2  -1

相信有了这个图会很好理解许多。
还可以直接对字符串进行索引操作,不只是对序列名操作。

>>>anchen[2]
'c'
>>>'abcde'[2]
'c'
就像这样两种操作是等价的!
2.2.2 切片

前面索引是对序列的单独元素进行访问,而切片来访问特定范围内的元素。

>>>anchen = 'abcdefg'
>>>anchen[1:4]
 'bcd'

大家会发现这里切出来了一个范围,不再是单个元素。
给大家再来一波详解:

>>>anchen = 'abcdefg'
#对应索引值  0123456
anchen[1:4]
'bcd'

就是切下下标[1~4)的所有元素,大家看到了这里我使用了数学上区间表示法,左闭右开。
就是包含左边界,不包含右边界。
同上面我们也可以使用负数切片

>>>anchen[-4:-1]#注意这里不是anchen[-1:-3],这样会切出一个空片。
'def'

负数切片并不难理解,只要理解清楚上面的负数索引就简单了。具体切片里面更多玩法大家可以自己解锁,基本规则就是我描述那样。
比如空切片和偷懒切片

>>>anchen[:]#空切片
'abcdefg'
>>>anchen[3:10]#偷懒切片
'defg'
#我们知道他只有七个元素,下标最大是6.这里我们使用大于6的数,就是把剩下元素都切出来

步长:我们执行切片操作时,都是我们指定起点终点,但是我们通常省略另外一个参数,步长。在普通切片中默认步长为1。这意味着所有元素都可被找到,下面我们来对比对比不同步长会发生什么?

>>>anchen[0:6:1]
'abcdefg'
当我们切换步长时:
>>>anchen[0:6:2]
'aceg'

这里我们发现步长为2时输出结果变了,变成了’aceg’,这里的2起到作用就是访问切片元素时以2为单位长度访问下一个,换数字也如此。如果步长是一个负数,那么就是从切片划定范围中从后往前访问,单位长度是该数绝对值!步长不能为0

2.2.3 序列相加

可使用加法来拼接序列。

>>>[1,2,3] + [4,5,6]
[1,2,3,4,5,6]
>>>'hello,' + 'sunshine23'
'hello,sunshine23'
>>>[1,2,3] + 'sunshine23'
typeerror:can noly concatenate list (not "string") to list

从错误信息我们可以看出,不能拼接字符串和列表,虽然都是序列。一般而言,不同类型不能拼接!毕竟人妖殊途。

2.2.4 乘法

将一个序列乘以一个数x时,表示重复这个序列x次来创建一个新序列:

>>>'anchen' * 3
'anchenanchenanchen'
>>>[42,12] * 3
[42, 12, 42, 12, 42, 12]

这些就是简单的序列相乘。
None、空列表和初始化
空列表是使用不包含任何内容的两个方括号([])表示的,如果要创建一个可包含十个元素的列表,但没有任何有用的内容,可像前面那样使用[42] * 10。但更准确的做法是使用[0] * 10,这将创建一个包含十个零的列表,然而在有些情况下,你可能想使用表示“什么都没有”的值,如表示还没有在列表中添加任何元素,在这种情况下,可使用None在python中那么表示什么都没有,因此,要将列表的长度初始化为10,可像这样做:

>>>anchen = [None] * 10
>>>anchen
[None,None,None,None,None,None,None,None,None,None,]
2.2.5 成员资格

要检查特定的值是否包含在序列中,可使用运算符in,这个运算符与前面讨论的运算符稍有不同,他检查是否满足指定的条件,并返回相应的值,满足条件时返回True,不满足条件返回False这样的运算符称为布尔运算符,而前述真值称为布尔值,布尔表达式将在后面更新中详细介绍。
下面是一些in运算符的使用:

>>> anchen = 'sunshine'
>>>'s' in anchen
True
>>>'w' in anchen
False
2.2.6 长度、最大值和最小值

内置函数:len,max,min非常有用。len可以返回序列中元素个数,min和max分别可以返回最小值和最大值。

>>>number = [1,2,3,4,5,6,7,8,9]
>>>len(nember)
9
>>>min(number)
1
>>>max(number)
9
>>>max(1,5,9)
9

今天就先分享到这,列表里的重要操作咱想单独列一篇。欲知后事如何,且看下更!

发布了7 篇原创文章 · 获赞 10 · 访问量 214

猜你喜欢

转载自blog.csdn.net/m0_46976252/article/details/105464813