Python ❀ 列表与元组

Posted 无糖可乐没有灵魂

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python ❀ 列表与元组相关的知识,希望对你有一定的参考价值。

文章目录

1、列表概念


列表是一系列按照特定顺序排列的元素集合;元素之间互相独立,没有联系;在Python中使用 [] 表示列表,其中元素使用 , 互相隔离;

a = ["aaa","bbb","ccc",11,22,33,44]
print(a)

输出结果:

['', 'bbb', 'ccc', 11, 22, 33, 44]

1.1 访问列表元素

列表是一个有序集合,因此要访问列表中的元素,只需要将该元素的索引告诉Python即可返回对应的元素;

print(a[0])

输出结果:

aaa

当请求列表中的元素时,Python只返回元素的值,并不携带括号与引号;也可以将元素的返回值作为字符串进行一些其他操作,如首字母大写等;

print(a[0].title())

输出结果:

Aaa

1.2 索引(从0开始并非1)

在Python中第一个元素的索引号为0,并不是1;列表的最后一个元素索引为 -1, 当然可以使用正常的排序索引获取末尾值;

a = ["aaa","bbb","ccc",11,22,33,44]
print(a[0])
print(a[1])
print(a[-1])
print(a[6])

输出结果:

aaa
bbb
44
44

1.3 列表中的值

可以使用列表中的值进行其他操作,如字符串的拼接,数字的运算等;

a = ["aaa","bbb","ccc",11,22,33,44]
txt = a[0] + a[1]
num = a[3] + a[4]
print(txt,num)

输出结果:

aaabbb 33

2、修改、添加、删除列表元素


列表的创建大多数都是动态的,随着程序的运行而增加、修改、删除元素;

2.1 修改列表元素

若需要修改某个列表其中的元素,可以通过元素的索引进行修改,如下代码:

a = ["aaa","bbb","ccc",11,22,33,44]
a[0] = 'ddd'
print(a[0])

输出结果:

ddd

2.2 添加列表元素

添加元素分为末尾添加和插入两种;

2.2.1 末尾添加列表元素

a = ["aaa","bbb","ccc",11,22,33,44]
a.append('eee')
print(a[-1])

输出结果:

eee

2.2.2 插入列表元素

a = ["aaa","bbb","ccc",11,22,33,44]
a.insert(3,'fff')    #在索引为3的位置添加字符串为fff的值
print(a[3])

输出结果:

fff

2.3 删除列表元素

在删除元素时也分别有两种删除方法:以索引号进行元素删除操作、末尾删除元素、直接删除元素的值;

2.3.1 以索引删除

使用del()方法删除需要明确知道所删除元素值的相对应索引;

a = ["aaa","bbb","ccc",11,22,33,44]
del a[1]
print(a)

输出结果:

['aaa', 'ccc', 11, 22, 33, 44]

2.3.2 末尾删除

使用pop()删除会返回删除的内容,因此可以将其赋值给某一个变量进行调用并进行其他操作;

a = ["aaa","bbb","ccc",11,22,33,44]
b = a.pop(3)
print(a)
print(b)

输出结果:

['aaa', 'bbb', 'ccc', 22, 33, 44]
11

当删除的元素不需要被使用时,推荐使用del()方法删除;若是删除的元素仍需要被再一次调用,推荐使用pop()方法;

2.3.3 删除值

当不清楚元素的索引时,可以直接操作删除列表中某元素的值;

a = ["aaa","bbb","ccc",11,22,33,44]
a.remove('aaa')
print(a)

输出结果:

['bbb', 'ccc', 11, 22, 33, 44]

由于使用remove()删除并无返回信息,因此可以将其删除的内容指定到某个变量,进行留存;

a = ["aaa","bbb","ccc",11,22,33,44]
b = "aaa"
a.remove(b)
print(a)
print(b)

输出结果:

['bbb', 'ccc', 11, 22, 33, 44]
aaa

当remove()删除完成后,删除的值仍保存在变量中,仍可以进行其他相关操作;

3、组织排列


在创建列表的过程中,元素的排序取决于录入元素的顺序,因此需要控制其排列顺序,以构建的顺序进行排列是非常有必要的;

3.1 永久性排序

使用sort()方法可以使得列表永久性排序;可以使用参数reverse=True进行反向排序;
sort()只支持单一的类型数据进行排序,如str或int,否则会报类型错误;

a = ["ddd","aaa","rrr"]
a.sort()
print(a)
a.sort(reverse=True)
print(a)

输出结果:

['aaa', 'ddd', 'rrr']
['rrr', 'ddd', 'aaa']

若列表内包含两种类型的数据时,sort()排序会报错;

a = ["aaa","bbb",131,223,4,1,14]
a.sort()
print(a)

输出结果:

Traceback (most recent call last):
  File "D:\\Python\\Test\\Source\\venv\\05_study_test.py", line 2, in <module>
    a.sort()
TypeError: '<' not supported between instances of 'int' and 'str'

3.2 临时性排序

若是需要保留原来的排列顺序,并且以特定的顺序呈现出来,可以使用函数sorted(),也支持传入参数reverse=True进行反向排序;
sorted()函数也只能支持单一的类型数据进行排序,否则会报类型错误;

a = [131,223,4,1,14]
print(sorted(a))
print(a)

输出结果:

[1, 4, 14, 131, 223]
[131, 223, 4, 1, 14]

3.3 反转输出列表元素

反转输出指的是以现在的元素顺序进行反向输出;

a = [131,223,4,1,14]
a.reverse()
print(a)

输出结果:

[14, 1, 4, 223, 131]

3.4 确认列表长度

使用len()函数确认列表长度,返回值为int类型;

a = [131,223,4,1,14]
b = len(a)
print(a)
print(type(b))

输出结果:

[131, 223, 4, 1, 14]
<class 'int'>

4、索引错误


在列表的元素查询比较容易出现的错误为索引错误;

a = [131,223,4,1,14]
print(a[10])

输出结果:

Traceback (most recent call last):
  File "D:\\Python\\Test\\Source\\venv\\05_study_test.py", line 2, in <module>
    print(a[10])
IndexError: list index out of range

如上代码,索引错误最常见的引发原因为列表索引超出范围;

5、遍历列表


遍历列表:对列表中的每个元素执行相同的操作;此行为在代码中被称为循环操作,因此我们可以使用for循环来执行遍历操作;

5.1 for循环遍历列表

循环非常重要,可以自动完成重复的工作;

a = [131,223,4,1,14]
for i in a:
    print(i)

输出结果:

131
223
4
1
14

如上代码所示,以变量 i 的不同赋值来输出列表 a 中元素的值,最后使用print()打印;
for循环每次重复操作结束自动执行换行,可以传递参数end=""修改结束符号是否需要换行;

a = [131,223,4,1,14]
for i in a:
    print(i,end=",")

输出结果:

131,223,4,1,14,

6、缩进错误与冒号缺失


Python根据缩进判断代码行与前一个代码行的关系;

6.1 缩进错误

主要出现以下几种情况:

  • 忘记代码缩进;
  • 不必要的缩进;
  • 错误的缩进;
a = [131,223,4,1,14]

输出结果:

  File "D:\\Python\\Test\\Source\\venv\\05_study_test.py", line 1
    a = [131,223,4,1,14]
IndentationError: unexpected indent

缩进错误,出现意想不到的缩进;

6.2 冒号缺失

a = [131,223,4,1,14]
for i in a
    print(i,end=",")

输出结果:

  File "D:\\Python\\Test\\Source\\venv\\05_study_test.py", line 2
    for i in a
              ^
SyntaxError: expected ':'

语法错误,缺少冒号;

7、数字列表


若是需要存储一些有规律的数字,那么直接通过列表的编写就显得十分繁琐,因此Python提供了很多的函数,来高效的完成此工作;

7.1 使用range()函数

函数 range() 能够较快的生成一系列数字;
代码格式:

range(起始元素,结束元素,步长)

需要注意的是结束数字为开区间,无法取值,若需要取值结束数字加1即可;

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

输出结果:

1
3
5
7

使用range()函数创建列表;

ls1 = list(range(0,10))
print(ls1)

输出结果:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

7.2 数字列表的统计计算

通过列表计算其元素最大值、最小值、总和;

ls1 = list(range(0,10))
print(ls1)
a = max(ls1)
b = min(ls1)
c = sum(ls1)
print(a,b,c)

输出结果:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
9 0 45

8、列表中的一部分


处理Python中的一部分元素被称为切片;

8.1 切片

代码格式:

[起始元素 : 结束元素 : 步长]

切片与range函数一样,结尾取值需要加1;切片的遍历也可以直接使用for循环,与列表的遍历方式完全一致(切片后的数据相当于列表的一个子列表)

ls1 = list(range(0,10))
print(ls1)
print(type(ls1))
a = ls1[1:3]
print(a)

输出结果:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
<class 'list'>
[1, 2]

结尾取值如下:

ls1 = list(range(0,10))
print(ls1)
a = ls1[1:3]
print(a)
b = ls1[1:3+1]
print(b)

输出结果:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 2]
[1, 2, 3]

8.2 复制列表

由于切片的参数,起始元素与结束元素不定义时,则以为全部切片,等同于复制操作;

ls1 = list(range(0,10))
print(ls1)
a = ls1[:]
print(a)

输出结果:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

9、元组


在使用Python中有时候我们需要创建一些列不可修改的元素,元组就可以满足这个需求,元组将元素变为不可变类型;

9.1 元组与遍历

代码格式:

(起始元素 : 结束元素 : 步长)

元组看起来与列表一样,使用小括号进行标识,索引方式与列表完全一致,唯一的区别是元素不可修改;

tp1 = tuple(range(0,10))
print(tp1)
print(type(tp1))

输出结果:

(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
<class 'tuple'>

元组的遍历与列表完全一致;

for i in tp1[0:3]:
    print(i)

输出结果:

0
1
2

元组不可修改,但是可以给元组进行变量赋值,修改变量的值进而修改元组的内容;

以上是关于Python ❀ 列表与元组的主要内容,如果未能解决你的问题,请参考以下文章

Python ❀ 列表与元组

Python3.7之列表与元组

python列表与元组的用法

python学习笔记之列表与元组

python-列表与元组

3python自学之路-数据类型之序列与元组