天天看点

初探Python_04_列表

一、列表是什么

比较正式的解释:

列表是由一系列按特定顺序排列的元素组成,你可以创建包含字母列表中所有字母、数字或者所有家庭成员姓名的列表;也可以将任何东西加入列表中,元素之间可以没有任何联系。

通俗理解:

列表和Java中的数组类似,不过Java中的数组要求数据要保持同一数据类型,而列表没有这个限制。如果把Java中数组比喻成集装箱,那么Python中的列表就相当于工厂,什么都可以往里放,没有数据类型的限制。

和Java中的数组类似,Python的列表用[ ] 来表示列表,元素之间用逗号(英文)隔开。如:

>>> num = [1, 2, 3, 'Shane', 3.14, [5, 6, 'Python']]
>>> print(num)
[1, 2, 3, 'Shane', 3.14, [5, 6, 'Python']]
           

二、列表元素的访问

由于列表是一个有序集合,所以我们可以通过索引来访问列表的元素。

索引下标从0开始

如:

>>> num = [1, 2, 3, 'Shane', 3.14, [5, 6, 'Python']]
>>> print(num)
[1, 2, 3, 'Shane', 3.14, [5, 6, 'Python']]
>>> print(num[3])
Shane
>>> print(num[5][2])
Python
           

三、列表元素的CRUD

1、修改列表元素

通过索引来修改指定元素的内容:

>>> num = [1, 2, 3, 'Shane', 3.14, [5, 6, 'Python']]
>>> print(num)
[1, 2, 3, 'Shane', 3.14, [5, 6, 'Python']]
>>> num[2] = 'Study'
>>> print(num)
[1, 2, 'Study', 'Shane', 3.14, [5, 6, 'Python']]
           

2、添加列表元素

添加元素共有三种方式:

<1>在列表末尾添加元素 – append();

<2>在列表任意位置添加元素 – insert();

<3>同时添加多个元素 – extend();

在列表末尾添加元素 – append()

>>> num = [1, 2, 3, 'Shane', 3.14, [5, 6, 'Python']]
>>> print(num)
[1, 2, 3, 'Shane', 3.14, [5, 6, 'Python']]
>>> num.append('好好学习')
>>> print(num)
[1, 2, 3, 'Shane', 3.14, [5, 6, 'Python'], '好好学习']
           

在列表任意位置添加元素 – insert()

>>> num = [1, 2, 3, 'Shane', 3.14, [5, 6, 'Python']]
>>> print(num)
[1, 2, 3, 'Shane', 3.14, [5, 6, 'Python']]
>>> num.insert(3, '你是最棒的')
>>> print(num)
[1, 2, 3, '你是最棒的', 'Shane', 3.14, [5, 6, 'Python']]
           

同时添加多个元素 – extend()

本质是两个列表的合并,可以理解为扩容

>>> num = [1, 2, 3, 'Shane', 3.14, [5, 6, 'Python']]
>>> print(num)
[1, 2, 3, 'Shane', 3.14, [5, 6, 'Python']]
>>> num.extend(['加油', '100'])
>>> print(num)
[1, 2, 3, 'Shane', 3.14, [5, 6, 'Python'], '加油', '100']
           

3、删除列表元素

删除元素同样有三种方式:

<1>使用del语句删除元素

<2>使用pop()方法删除元素

<3>使用remove()方法删除元素

使用del语句删除元素

根据索引进行删除(需要知道元素的索引)

>>> num = [1, 2, 3, 'Shane', 3.14, [5, 6, 'Python']]
>>> print(num)
[1, 2, 3, 'Shane', 3.14, [5, 6, 'Python']]
>>> del num[5]
>>> print(num)
[1, 2, 3, 'Shane', 3.14]
           

使用pop()方法删除元素

Python的列表底层就是数据结构中的栈,这个pop()方法和栈的出栈方法一样:弹出列表末尾的元素,而且我们还可以接着使用这个元素。比如在开发中,我们要将用户从活跃名单中删除,并让他加入到非活跃名单就可以用这个方法。

pop()方法除了可以删除末尾元素,也可以和del语句一样,根据索引删除指定位置的元素

在使用中如果无法确定使用那一个方法来删除,可以根据需求来选择,如果我们要删除一个元素,且以后不会在使用到他,则可以选择del语句,如果还要继续使用,则使用pop()方法。

>>> num = [1, 2, 3, 'Shane', 3.14, [5, 6, 'Python']]
>>> print(num)
[1, 2, 3, 'Shane', 3.14, [5, 6, 'Python']]
>>> num01 = num.pop()
>>> print(num)
[1, 2, 3, 'Shane', 3.14]
>>> print(num01)
[5, 6, 'Python']
>>> num02 = num.pop(2)
>>> print(num)
[1, 2, 'Shane', 3.14]
>>> print(num02)
3
           

使用remove()方法删除元素

如果我们只知道元素的值而不知道元素的索引位置,那么我们可以使用remove()方法来删除元素。使用remove()方法删除的元素我们也可以继续使用

>>> num = [1, 2, 3, 'Shane', 3.14, [5, 6, 'Python']]
>>> print(num)
[1, 2, 3, 'Shane', 3.14, [5, 6, 'Python']]
>>> num.remove('Shane')
>>> print(num)
[1, 2, 3, 3.14, [5, 6, 'Python']]
>>> num03 = 3.14
>>> num.remove(num03)
>>> print(num)
[1, 2, 3, [5, 6, 'Python']]
>>> print(num03)
3.14
           

4、列表元素的遍历

>>> num = [1, 2, 3, 'Shane', 3.14, [5, 6, 'Python']]
>>> for el in num:
		print(el)

1
2
3
Shane
3.14
[5, 6, 'Python']
           

四、数字列表

1、使用range()创建数字列表

range()可以快速的生成一系列数字,如:

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

1
2
3
4
           

打印了1~4的数字,不包含5.

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

>>> value = list(range(1, 5))
>>> print(value)
[1, 2, 3, 4]
           

使用range()函数时,还可以指定步长。比如要打印1~10之间的偶数:

>>> value = list(range(2, 11, 2))
>>> print(value)
[2, 4, 6, 8, 10]
           

函数range()从2开始,不断加2,直到达到或超过终值(11)。

简单应用:

创建一个列表,其中包含1~10的平方:

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

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
           

2、数字列表的简单统计计算

>>> nums = [1, 3, 2, 4, 6, 34, 67, 2, 4]
>>> min(nums)
1
>>> max(nums)
67
>>> sum(nums)
123
           

3、列表解析

列表解析将for循环和创建新元素的代码合成一行,并自动附加新元素。

如上例中的创建一个列表,其中包含1~10的平方:

>>> nums = [num**2 for num in range(1 ,11)]
>>> print(nums)
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
           

五、列表切片

1、生成切片

>>> nums = [1, 3, 2, 4, 5, 23, 23, 65, 23, 767, 0]
>>> print(nums[0:3])
[1, 3, 2]
>>> print(nums[3:6])
[4, 5, 23]
>>> print(nums[:5])
[1, 3, 2, 4, 5]
>>> print(nums[3:])
[4, 5, 23, 23, 65, 23, 767, 0]
>>> print(nums[-3:])
[23, 767, 0]
           

1)给定索引范围,可以生成任意位置的切片

2)没有给定起始索引,自动从列表开头开始提取

3)没有给定终止索引,自动在列表末尾终止

4)负数索引返回列表末尾相应距离的元素,可以用这个方法输出列表末尾的任何切片

2、遍历切片

>>> nums = [1, 3, 2, 4, 5, 23, 23, 65, 23, 767, 0]
>>> for num in nums[:3]:
	print(num)

1
3
2
           

3、复制列表

可以使用切片的方式复制列表,不指定起始索引和终止索引即可复制整个列表。

>>> nums = [1, 3, 2, 4, 5, 23, 23, 65, 23, 767, 0]
>>> nums01 = nums[:]
>>> print(nums)
[1, 3, 2, 4, 5, 23, 23, 65, 23, 767, 0]
>>> print(nums01)
[1, 3, 2, 4, 5, 23, 23, 65, 23, 767, 0]
           

复制之后的列表是一个独立的列表,他们之间的CRUD互不影响。

不使用切片而直接将nums赋值给nums01并不能起到复制效果,他们之间还是指向的同一个列表,元素操作时会相互影响。

六、组织列表

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

<2>使用sorted()方法对列表进行临时性排序

<3>倒着打印列表

<4>确定列表的长度

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

此方法是永久性的改变了列表的排序顺序,不可逆转

>>> nums = [1, 3, 2, 4, 5, 23, 23, 65, 23, 767, 0]
>>> nums.sort()
>>> print(nums)
[0, 1, 2, 3, 4, 5, 23, 23, 23, 65, 767]
           

传递参数reverse=True可以将列表排序后再反转

>>> nums = [1, 3, 2, 4, 5, 23, 23, 65, 23, 767, 0]
>>> nums.sort(reverse=True)
>>> print(nums)
[767, 65, 23, 23, 23, 5, 4, 3, 2, 1, 0]
           

2、使用sorted()方法对列表进行临时性排序

sorted()只是临时进行排序,不改变列表的原始顺序

>>> nums = [1, 3, 2, 4, 5, 23, 23, 65, 23, 767, 0]
>>> print(nums)
[1, 3, 2, 4, 5, 23, 23, 65, 23, 767, 0]
>>> print(sorted(nums))
[0, 1, 2, 3, 4, 5, 23, 23, 23, 65, 767]
>>> print(nums)
[1, 3, 2, 4, 5, 23, 23, 65, 23, 767, 0]
           

同样的,传递参数reverse=True也可以将排序后的列表反转

>>> nums = [1, 3, 2, 4, 5, 23, 23, 65, 23, 767, 0]
>>> print(nums)
[1, 3, 2, 4, 5, 23, 23, 65, 23, 767, 0]
>>> print(sorted(nums))
[0, 1, 2, 3, 4, 5, 23, 23, 23, 65, 767]
>>> print(nums)
[1, 3, 2, 4, 5, 23, 23, 65, 23, 767, 0]
>>> print(sorted(nums,reverse=True))
[767, 65, 23, 23, 23, 5, 4, 3, 2, 1, 0]
           

3、倒着打印列表

使用reverse()方法

>>> nums = [1, 3, 2, 4, 5, 23, 23, 65, 23, 767, 0]
>>> print(nums)
[1, 3, 2, 4, 5, 23, 23, 65, 23, 767, 0]
>>> nums.reverse()
>>> print(nums)
[0, 767, 23, 65, 23, 23, 5, 4, 2, 3, 1]
           

4、确定列表的长度

使用len()函数

>>> nums = [1, 3, 2, 4, 5, 23, 23, 65, 23, 767, 0]
>>> len(nums)
11