python基础知识 ( 3 ) ——列表(学习笔记整理)

列表由一系列按特定顺序排列的元素组成,列表中可以加入字母、数字、字符串等,其各元素之间可以没有任何关系。python中,用([ ])表示列表,并用逗号分隔其中的要素。

language=['python','java','golong','C']
print(language)

#输出结果
['python', 'java', 'golong', 'C']

用python直接打印列表时,python会把列表的内部表示直接打印出来,包括方括号和逗号。

1 列表相关函数

1.1 访问和使用列表元素

访问列表元素,只需将该元素的位置或者索引告诉python即可。要访问列表元素,只需要指出列表名称,再指出元素索引,并将其放在方括号内即可。

language=['python','java','golong','C']
print(language[0])

#输出结果
python

python为访问最后一个列表元素提供了特殊的方法,通过将索引指定为-1,可让python返回最后一个列表元素。该约定也适用于其他负数索引,如索引-2返回倒数第二个列表元素。

language=['python','java','golong','C']
print(language[-1])
print(language[-2])

#输出结果
C
golong

可对任何列表元素使用字符串方法,如:

language=['python','java','golong','C']
print(language[1].title())

#输出结果
Java

1.2 修改、添加和删除列表元素

1.2.1 修改列表元素

要修改列表元素,可指定列表名和要修改的元素的索引,再指定该元素的新值。例如:

language=['python','java','golong','C']
print(language[1])
language[1]='javascript'
print(language[1])

#输出结果
java
javascript

1.2.2 在列表中添加元素

1.2.2.1 在列表末尾添加元素

在列表末尾添加元素时,可使用方法append( )将待添加元素添加至列表末尾,而不影响其他元素。在创建列表时,可以先创建一个空表,然后利用append( )方法将元素填入。

language=['python','java','golong','C']
print(language)
language.append('C++')
print(language)

#输出结果
['python', 'java', 'golong', 'C']
['python', 'java', 'golong', 'C', 'C++']
1.2.2.2 在列表中插入元素

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

language=['python','java','golong','C']
print(language)
language.insert(1,'C++')
print(language)

#输出结果
['python', 'java', 'golong', 'C']
['python', 'C++', 'java', 'golong', 'C']

1.2.3 删除元素

1.2.3.1 使用del语句删除元素

当知道待删除元素在列表中的位置时,可使用del语句。使用del语句将值从列表中删除后,就无法再访问该值了。

language=['python','java','golong','C']
print(language)
del language[1]
print(language)
del language[-1]
print(language)

#输出结果
['python', 'java', 'golong', 'C']
['python', 'golong', 'C']
['python', 'golong']
1.2.3.2 使用pop( )删除元素

方法pop( )可删除列表末尾的元素,并让你可以继续使用该元素。其机理类似在栈中弹出栈顶元素。使用pop( )也可以删除任意位置的元素,只要在括号内填入待删除元素的索引即可。
删除列表末尾元素

language=['python','java','golong','C']
print(language)
rear=language.pop()
print(language)
print(rear)
#输出结果

['python', 'java', 'golong', 'C']
['python', 'java', 'golong']
C

删除列表任意位置的元素

language=['python','java','golong','C']
print(language)
rear=language.pop(2)
print(language)
print(rear)

#输出结果
['python', 'java', 'golong', 'C']
['python', 'java', 'C']
golong
1.2.3.3 根据值删除元素

当不知道待删除元素的索引,而只知道它的值的时候,可以使用remove( )从列表中删除该元素。

language=['python','java','golong','C']
print(language)
language.remove('golong')
print(language)

#输出结果
['python', 'java', 'golong', 'C']
['python', 'java', 'C']

使用remove( )删除列表中的元素时,可以接着使用它的值。例如:

language=['python','java','golong','C']
print(language)
best_one='python'
language.remove(best_one)
print(language)
print(best_one)

#输出结果
['python', 'java', 'golong', 'C']
['java', 'golong', 'C']
python

方法remove( )只删除第一个指定的值。如果要删除的值可能在列表中出现多次,就需要使用循环来判断是否删除了所有这样的值。

1.3 组织列表

在创建的列表中,元素的排列常常是无法预测的。实际应用中,有时需要保留列表元素最初的排列顺序,有时又需要调整排列顺序。因此,python提供了许多组织列表的方式,可根据具体情况选用。

1.3.1 使用方法sort( )对列表进行永久性排序

sort( )函数默认对列表中要素按照ASCII码进行升序排序,且方法sort( )永久性地改变了列表元素的排列顺序,无法再恢复到原来的排列顺序。例如:

language=['python','java','golong','C','@123','123','c','?']
language.sort()
print(language)

#输出结果
['123', '?', '@123', 'C', 'c', 'golong', 'java', 'python']

ASCII码对照表(引自免费文档中心)
引自:https://www.mianfeiwendang.com/doc/7345169db5932b91dd5fad8d

方法sort( )还可以按照ASCII码进行降序排列,只需向sort( )方法传递参数reverse=True 即可。

language=['python','java','golong','C','@123','123','c','?']
language.sort(reverse=True)
print(language)

#输出结果
['python', 'java', 'golong', 'c', 'C', '@123', '?', '123']

1.3.2 使用sorted( )对列表进行临时排序

函数sorted( )可以让你能够按ASCII码升序的顺序显示列表元素,同时不影响它们在列表中的原始排列顺序。当向sorted( )函数传递参数reverse=True时,可以实现按ASCII码降序的顺序显示列表元素。

language=['python','java','golong','C','@123','123','c','?']
print(language)				#原始排列顺序
print(sorted(language))		#使用sorted()进行升序排列
print(language)				#验证sorted()并没有改变原始排列顺序
print(sorted(language,reverse=True))	#使用sorted()进行降序排列
print(language)				#验证sorted()并没有改变原始排列顺序

#输出结果
['python', 'java', 'golong', 'C', '@123', '123', 'c', '?']
['123', '?', '@123', 'C', 'c', 'golong', 'java', 'python']
['python', 'java', 'golong', 'C', '@123', '123', 'c', '?']
['python', 'java', 'golong', 'c', 'C', '@123', '?', '123']
['python', 'java', 'golong', 'C', '@123', '123', 'c', '?']

1.3.3 倒着打印列表

使用方法reverse( )可以反转列表元素的排列顺序。reverse()永久改变列表元素的排列顺序,但只需再次reverse()即可恢复。

language=['python','java','golong','C']
language.reverse()
print(language)
language.reverse()
print(language)

#输出结果
['C', 'golong', 'java', 'python']
['python', 'java', 'golong', 'C']

1.3.4 确定列表的长度

使用len( )函数可快速获取列表的长度。且len()函数返回的是一个int 型的值

language=['python','java','golong','C']
n=len(language)
print(type(n))
print(n)

#输出结果
<class 'int'>
4

1.4 操作列表

1.4.1 遍历整个列表

在python中,如果需要对列表中的每个元素都执行相同的操作,可以使用for循环实现。

names=['elva','lily','daisy','alice']
for name in names:      #python中,用缩进判断是否属于同一代码块
    print(name)
print('over')

#输出结果
elva
lily
daisy
alice
over

1.4.2 创建数值列表

列表非常适合用于存储数字集合,python提供了很多工具,可以帮助高效处理数字列表。

1.4.2.1 range( )函数

在python中,使用range( )函数可以轻松生成一系列数字。

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

#输出结果
1
2
3
4

在该示例中,range( )只是打印数字1~4,函数range( )让python从你指定的第一个值开始教,并在到达你指定的第二个值后终止,因此输出不包含第二个值(示例中为5)。

当要创建数字列表时,可以使用函数list( )将range( )的结果直接转换成列表,如果将range( )作为list( )的参数,输出将为一个数字列表。

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

#输出结果
[1, 2, 3, 4]

使用range( )时,还可以指定步长。例如下面的代码打印1~10内的偶数。

numbers=list(range(2,11,2))
print(numbers)

#输出结果
[2, 4, 6, 8, 10]

使用range( )函数几乎能创建任意需要的数字集。以下代码展示了如何创建一个列表,其中包含前10个整数的平方。(python中用(**)表示乘方)

squares=[]
for value in range(1,11):
    square=value**2
    squares.append(square)
print(squares)

#为了使代码更简洁,可以不使用临时变量square,直接将每个计算的值附加到列表末尾

squares=[]
for value in range(1,11):
    squares.append(value**2)
print(squares)

#输出结果
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
#两段代码输出结果一致
1.4.2.2 对数字列表执行简单的统计计算

python中有一些专门处理数字列表的python函数。

digits=[1,2,3,4,5,6,7,8,9,10]
print(min(digits))
print(max(digits))
print(sum(digits))

#输出结果
1
10
55
1.4.2.3 列表解析

列表解析可以将for循环和创建新元素的代码合并成一行,并自动附加新元素。
例:下列代码将创建1~10的平方数列表

squares=[value**2 for value in range(1,11)] #注意!此处的for语句没有冒号!!!
print(squares)

#输出结果
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

1.4.3 使用列表的一部分

利用python中的切片,可以处理列表的部分元素。

1.4.3.1 创建切片

要创建切片,可指定要使用的第一个元素和最后一个元素的索引。与函数range( )一样,python在到达你指定的第二个索引前面的元素后停止,要输出列表中的前三个元素,需要指定索引0~3,这将输出分别为0,1,2的元素。

names=['elva','lily','saily','daisy','jenny']
print(names[0:3])

#输出结果
['elva', 'lily', 'saily']

也可以根据需求生成列表的任何子集,例如当需要提取列表的第2~4个元素,可将起始索引指定为1,并将终止索引指定为4。

names=['elva','lily','saily','daisy','jenny']
print(names[1:4])

#输出结果
['lily', 'saily', 'daisy']

如果没有指定起始索引,python将自动从列表开头开始。
类似地,如果省略终止索引,切片将终止于列表末尾。

names=['elva','lily','saily','daisy','jenny']
print(names[:4])	#省略起始索引
print(names[2:])

#输出结果
['elva', 'lily', 'saily', 'daisy']
['saily', 'daisy', 'jenny']

利用负数索引可以输出列表末尾的切片,例如要输出名单上最后三个人名,可以使用切片names[-3:]:

names=['elva','lily','saily','daisy','jenny']
print(names[-3:])

#输出结果
['saily', 'daisy', 'jenny']
1.4.3.2 遍历切片

可以在for循环中使用切片以遍历列表中的部分元素。例如,以下代码遍历列表中的前三个元素。

names=['elva','lily','saily','daisy','jenny']
for name in names[:3]:
    print(name.title())
    
#输出结果
Elva
Lily
Saily
1.4.3.3 复制列表

要复制列表,可以创建一个包含整个列表的切片,方法是同时省略起始索引和终止索引。如以下代码所示,便复制创建了一个新的列表。

names=['elva','lily','saily','daisy']
new_names=names[:]
print(names)
print(new_names)

#输出结果
['elva', 'lily', 'saily', 'daisy']
['elva', 'lily', 'saily', 'daisy']

为验证新创建的列表与原列表并非同一列表,即二者的数据在内存中分开存储,我们向两个列表分别添加一个不同的元素,如以下代码所示:

names=['elva','lily','saily','daisy']
new_names=names[:]
names.append('jenny')
new_names.append('marry')
print(names)
print(new_names)

#输出结果
['elva', 'lily', 'saily', 'daisy', 'jenny']
['elva', 'lily', 'saily', 'daisy', 'marry']
#两个姓名都已添加到正确的列表中,即两个列表各自的操作不会影响另一个列表

但如果只是简单地将names赋值给new_names,则无法得到两个列表。如以下代码所示:

names=['elva','lily','saily','daisy']
new_names=names
names.append('jenny')
print(names)
print(new_names)
new_names.append('marry')
print(names)
print(new_names)

#输出结果
['elva', 'lily', 'saily', 'daisy', 'jenny']
['elva', 'lily', 'saily', 'daisy', 'jenny']
['elva', 'lily', 'saily', 'daisy', 'jenny', 'marry']
['elva', 'lily', 'saily', 'daisy', 'jenny', 'marry']
#可以理解为:赋值之后,new_names只是一个指向原names存储空间的指针,
#此时无论是对names还是new_names进行操作,都是在对统一存储空间的数据进行操作

1.5 元组

列表是可以修改的,因此适合存储在程序运行期间会发生变化的数据集。然而,当你需要创建一系列不可修改的元素时,就需要用到元组。即元组是不可修改的列表。

1.5.1 元组的定义

元组使用圆括号而不是方括号来标识。定义元组后,就可以使用索引来访问其元素,就像访问列表元素一样。元组中的元素一旦确定,就不能修改,任何试图修改元组中元素的操作都是被禁止的。

dimensions=(200,50)
print(dimensions[0])
print(dimensions[1])

#输出结果
200
50

#当试图修改元组中元素时
dimensions=(200,50)
dimensions[0]=250

#编译器就会报错
Traceback (most recent call last):
  File "D:\pythonProject\first\my_first_python.py", line 4, in <module>
    dimensions[0]=250
    ~~~~~~~~~~^^^
TypeError: 'tuple' object does not support item assignment

1.5.2 遍历元组中的所有值

像列表一样,可以利用for循环遍历元组中的所有值。

dimensions=(200,50)
for dimension in dimensions:
    print(dimension)

#输出结果
200
50

1.5.3 修改元组变量

虽然不能修改元组的元素,但可以给存储元组的变量赋值,即可重新定义元组。

dimensions=(200,50)
print('Original dimensions :')
for dimension in dimensions:
    print(dimension)
dimensions=(400,100)
print('New dimensions :')
for dimension in dimensions:
    print(dimension)

#输出结果
Original dimensions :
200
50
New dimensions :
400
100

说明

参考图书:Python编程: 从入门到实践 /(美)埃里克·马瑟斯 (Eric Matthhes) 著; 袁国忠译. --北京: 人民邮电出版社, 2016. 7

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python3基础学习笔记(精品).pdf》是一本关于Python3基础学习的精品教材。该教材的内容包括Python3的基本语法、数据类型、控制流程、函数的定义和使用、文件的读写等基础知识点。 首先,教材详细介绍了Python3的基本语法规则,包括变量的声明和赋值、注释的使用,以及基本的运算符和表达式。通过学习这些基本语法,可以帮助读者快速掌握编写Python3程序的基本要素。 其次,教材系统地介绍了Python3的各种数据类型,如整数、浮点数、字符串、列表、元组、集合和字典等。对于每种数据类型,都给出了详细的说明和示例代码,帮助读者更好地理解和运用这些数据类型。 此外,教材还深入讲解了Python3的控制流程,包括条件语句、循环语句和异常处理等。这些控制流程在编写程序时非常重要,通过学习这些知识,读者可以写出更具有逻辑性和灵活性的程序。 教材还介绍了Python3的函数定义和使用方法。函数是程序的基本组织单位,学会使用函数可以提高代码的复用性和可读性。教材通过讲解函数的定义、参数传递和返回值等内容,帮助读者熟练掌握函数的使用。 最后,教材还介绍了Python3文件的读写操作。文件读写是程序与外部文件进行交互的重要方式,教材提供了读取和写入文件的的示例代码,帮助读者理解和掌握文件操作的基本方法。 总之,《Python3基础学习笔记(精品).pdf》是一本内容丰富、系统性强的Python3基础学习教材。通过学习这本教材,读者能够掌握Python3基础知识,并能够用Python3编写简单的程序。这本教材对于初学者来说是一本很好的学习资料。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值