Python列表及相关操作学习

一 认识列表

1.1 “列表” 是什么?

        【列表】由一系列按特定顺序排列的元素组成。在Python中,用方括号 [ ] 表示列表,用逗号分隔其中的元素,其中的元素之间可以没有任何关系,可以将任何东西(数字、字母、字符等)加入列表。列表通常包含多个元素,因此一般给列表指定一个表示复数的名称(如 letters、digits、names)。

1.2 “列表” 长啥样?

        下面是一个简单的示例,其中包含几种自行车:

bicycles=['trek','cannondale','redline','specialized']

        如果让Python将列表打印出来,Python将打印列表的内部表示,包括方括号:

['trek','cannondale','redline','specialized']

1.3 访问列表元素

        列表是有序集合,这里的序指的是元素在列表中所占位置的排序,因此要访问列表的元素,只需将该元素的位置(索引❶)告诉Python即可。例如,下面的代码从列表bicycles中提取第一款自行车:

bicycles= ['trek','cannondale','redline','specialized']
print(bicycles[0])

        当请求获取列表元素时,只返回该元素,而不包括方括号:

trek

❶需要注意,索引从0而不是1开始。在Python中,第一个列表元素的索引为0,而不是1。同时,Python为访问最后一个列表元素提供了一种特殊语法,通过将索引指定为-1,可让Python返回最后一个列表元素。

二 对列表元素进行操作

2.1 修改列表元素

        要修改列表元素,可指定列表名和要修改的元素的索引,再指定该索引位置上的新值。例如,将names列表中的第2个元素Merry改为Lily:

names=['Bob','Merry','Alice','Sharly']
names[1]='Lily'

2.2 在列表中添加元素

         append()方法 

        使用append()方法将元素追加到列表末尾,而不影响列表中的其他元素。

names=['Bob','Merry','Alice','Sharly']
names.append('Lily')

         insert()方法 

        使用insert()方法可以在列表中的任意位置添加新元素,使用时需要指定新元素的位置和值。

names=['Bob','Merry','Alice','Sharly']
names.insert(0,'Lily')

2.3 在列表中删除元素

         del 语句 

        使用del语句可以删除列表中任意位置的元素,只要知道其索引即可。

names=['Bob','Merry','Alice','Sharly']
del names[0]

         pop()方法 

        使用pop()方法可以删除列表中任意位置的元素(只要知道指定要删除的元素的索引即可,若不添加索引值则认定删除列表末尾元素),同时弹出这个被删除的元素,让你能够继续使用它。

names=['Bob','Merry','Alice','Sharly']
popped_names=names.pop(0)
print(names)
print(f"{popped_names} was deleted")

        如果不确定使用del语句还是pop()方法,下面是一个简单的判断标准:如果要从列表中删除一个元素,且不再以任何方式使用它,就使用del语句;如果要在删除元素后继续使用它,就使用pop()方法。

         remove()方法 

        有时候,不知道要从列表中删除的元素在哪个位置,只知道要删除的元素的值,可使用remove()方法。

names=['Bob','Merry','Alice','Sharly']
names.remove('Bob')

        remove()方法只删除第一个指定的值。如果要删除的值在列表中出现多次,就需要使用循环,具体方法在之后的博客中谈到。

2.4 对列表中的元素进行排序

         sort()方法 

        sort()方法可以使列表中元素按照字母顺序排列,永久地修改列表元素的排列顺序。

names=['Bob','Merry','Alice','Sharly']
names.sort()

         sorted()函数 

        使用sorted()函数可对列表元素按照字母顺序进行临时排序,在调用sorted()函数后,原列表中元素的排列顺序没变(这是sorted()函数与sort()方法的区别)。

names=['Bob','Merry','Alice','Sharly']
print(sorted(nmes))
print(names)

         reverse()方法 

        使用reverse()方法可以反转❷列表元素的排列顺序。

names=['Bob','Merry','Alice','Sharly']
names.reverse()
print(names)

❷请注意,reverse()方法不是按与字母顺序相反的顺序排列列表元素,只是反转列表元素的排列顺序。

2.5 确定列表的长度

        len()函数 

        使用len()函数可以快速获得列表的长度,即列表中包含多少个元素。

names=['Bob','Merry','Alice','Sharly']
print(len(names))

三 对列表进行操作

3.1 遍历整个列表

        使用for循环可以遍历整个列表:

names=['Bob','Merry','Alice','Sharly']
for name in names:
    print(name)

        执行代码后,输出如下:

Bob
Merry
Alice
Sharly

3.2 创建数值列表

        创建数值列表需要用到list()函数和range()函数,首先介绍range()函数。

        使用range()函数可以生成一系列的数,例如:

for i in range(1,5):
    print(i)

--------------------------------------------------------#以下是打印结果
1
2
3
4

        range()函数让Python从指定的第一个数值开始数,并在到达指定的第二个数值时停止,因此输出不包含第二个值。在使用range()函数时,还可以指定步长,如下:

for i in range(1,10,2):
    print(i)

--------------------------------------#以下是最终打印结果
1
3
5
7
9

        在这个示例中,range()函数从1开始数,然后不断地加2,直到达到或者超过终值(10)。

        list()函数可以将range()的结果直接转换为列表。如下:

numbers=list(range(1,5))
print(numbers)


-----------------------------------#以下是最终打印结果
[1,2,3,4]

3.3 列表推导式

        列表推导式将for循环和创建新元素的代码合并为一行:

squares=[value**2 for value in range(1,5)]
print(squares)

-----------------------------------#以下是最终打印结果
[1,4,9,16]

        首先需要指定一个描述性的列表名,本例中为squares,然后指定一个左方括号,并定义一个表达式,用于生成要存储到列表中的值。在本例中,表达式为value**2。接下来,编写一个for循环,用于给表达式提供值,再加上右方括号。请注意,这里的for语句末尾没有冒号。

3.4 切片

        与遍历整个列表相对应,使用切片可以处理列表的部分元素。切片即是在列表名后加一个方括号,方括号中包含指定要使用的第一个元素和最后一个元素的索引,两个索引之间用冒号隔开,如下:

names=['Bob','Merry','Alice','Sharly']
print(names[1:3])

-------------------------------------#以下是最终打印结果
['Merry','Alice','Sharly']

        如果没有指定第一个索引,Python将自动从列表开头开始;如果没有指定第二个索引,Python将自动遍历至最后一个元素。

3.5 复制列表

        要复制列表,需要创建一个包含原列表所有元素的切片,如下:

my_foods=['pizza','falafel','carrot cake']
friend_foods=my_foods[:]

        这样就创建了两个名称分别为my_foods和friend_foods的独立列表,对其中一个列表进行增删元素操作不会影响另外一个列表。而下面这种方式是错误的(这种语法实际上是将新变量friend_foods关联到已与my_foods相关联的列表,因此这两个变量指向同一个列表):

my_foods=['pizza','falafel','carrot cake']
friend_foods=my_foods

四 元组

        元组与列表很像,只是列表中的元素可以更改,而元组中的元素不可更改。列表用方括号表示,而元组用圆括号表示。如下,names就是一个元组:

names=('Bob','Lily','Alice')

        虽然元组中的元素不可更改,但是可以给指向元组的变量重新指定另一个元组:

names=('Bob','Lily','Alice')
names=('Tiantian','Youyou','Haoxin')

五 说明

        本文是笔者在学习Python的列表相关章节过程中所作的内容梳理,既是为了方便自己复习,也希望能够帮助到其他正在学习Python的朋友。笔者学习的书籍是由Eric Matthes著、袁国忠译、陶俊杰审、人民邮电出版社出版的《Python编程 从入门到实践》,本文使用的语言和很多例子都来自该书。作为一个编程小白,笔者认为这本书对初学者非常友好,是一本很经典的书;同时,作为一个编程小白,笔者知识水平有限,文中不免会出现部分描述错误。如果有感到困惑的地方,可能就是本文描述不当所致,请移步至其他优秀的博文中寻求解答。

  • 27
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值