首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

火火Python小课堂 vol.1

list是Python种最基本的数据结构,也是最常用的数据类型。

作为一个即搞娱乐也做技术的团队,今天跟大家简单讲解一下list的使用。

list的位置或索引,第一个索引是0,第二个索引是1,以此类推

1、定义list

list1 = []# 定义一个空list

list2 = ['X','T',4,'B']# 定义一个string和int混合的list

list3 = ['H','Y','H']# 定义一个纯string的list

上面的list2可以看到,我们在list2[2]中存放了一个int类型的数字,这个数字是可以正常参与运算的,list支持多种类型的数据混合存放。

请各位记住上面定义的三个列表,因为我们下面将使用这三个list为大家讲解list及其内置函数的使用。

在我们使用的时候往往会用到二维三维甚至更多维的列表,但我们在定义的时候不能够用下面这样的方式定义。

❌list = [[]]

这样定义将会出现一个问题,就是list会超出最大长度,导致报错。所以我们在定义二维列表的时候需要用这样一个语句

✅list = [[forxinrange(10)]foryinrange(10)]

通过上面的定义方式,我们就获得了一个10x10的,所有元素都是0的二维列表。

2、更新

list3 = ['H','Y','H']

print('list3[2]: '+ list3[2])# 输出当前list3的第三个值

list3[2] ='T'# 将list3的第三个值 H 替换为 T

print('list3[2]: '+ list3[2])# 输出更新后list3的第三个值

运行结果

list3[2]: H

list3[2]: T

我们可以通过简单的赋值来更新list

3、删除

(1)del

del 列表名称[索引点]

list2 = ['X','T',4,'B']# 定义一个string和int混合的list

print(list2)# 输出list2

dellist2[2]# 删除list2的第三个值

print(list2)# 输出list2

运行结果

['X', 'T', 4, 'B']

['X', 'T', 'B']

列表支持对其中任一值的修改和删除

(2)pop

列表名称.pop(索引点)

list2 = ['X','T',4,'B']

list3 = ['H','Y','H']

print(list2)

print(list3)

list2.pop()

list3.pop(1)

print(list2)

print(list3)

运行结果

['X', 'T', 4, 'B']

['H', 'Y', 'H']

['X', 'T', 4]

['H', 'H']

使用pop函数可以移除列表中某个元素,list3.pop(1)就是对list3中索引1的元素进行移除。但如果没有指定索引时,会默认移除列表中的最后一个元素。

(3)remove

列表名称.remove(移除参数)

list3 = ['H','Y','H']

print(list3)

list3.remove('H')

print(list3)

运行结果

['H', 'Y', 'H']

['Y', 'H']

remove会先在列表中查询参数所在的位置,并移除第一个匹配到的元素。

(4)clear

列表名称.clear()

list3 = ['H','Y','H']

print(list3)

list3.clear()

print(list3)

运行结果

['H', 'Y', 'H']

[]

clear会将列表中的元素全部清空。

4、添加

list添加元素的方式比较多,比较起来也有较大的区别,适用于各种不同的场景。我们还是用简单的代码来给大家讲解一下list的添加操作。

(1)“+”号

list2 = ['X','T',4,'B']

list3 = ['H','Y','H']

list2 += list3# 在list2中加入list3

print(list2)

运行结果

['X', 'T', 4, 'B', 'H', 'Y', 'H']

这是将两个list相加得到一个新的返回值,这个方法看起来非常的容易理解,但因为需要创建新的list对象,会消耗额外的内存,在编程的时候会尽量避免使用“+”。

(2)‘:’号

列表名称[起始索引点:结束索引点]

list2 = ['XT','XT4','4','B','HYH','HY','H','XT4BHYH']

list = list2[1:5]

print(list)

运行结果

['XT4', '4', 'B', 'HYH']

我们可以使用‘:’来截取部分列表中的元素,返回一个新的列表

(3)append

列表名称.append(新增元素)

list1 = []# 定义一个空列表

print(list1)

list2 = ['X','T',4,'B']

list1.append(list2)

print(list1)

list3 = ['H','Y','H']

list1.append(list3)

print(list1)

运行结果

[]

[['X', 'T', 4, 'B']]

[['X', 'T', 4, 'B'], ['H', 'Y', 'H']]

我们一起分析一下这个运行结果。第一次输出list1,因为list1是一个空的列表,所以输出结果为空。第二次输出list1,似乎与直接输出list2没有不同,但与正常输出list2的不同之处在于外面多了一个中括号。第三次输出list1时,我们看到list2和list3分别作为了两个元素添加在了list1中。

为了证实这个想法,我们可以用以下代码

print(list1[])

print(list1[1])

运行结果

['X', 'T', 4, 'B']

['H', 'Y', 'H']

运行结果表明list1中的两个元素确实为list2和list3,这也就让list1变成了一个二维的列表,关于这部分在后面会提到。

从上面我们对append的实验,不难发现append会追加一个单个元素到list的结尾处,不管这个是什么类型,只接受一个参数。而这个参数可以在list中保持着原有的结构类型。

(4)extend

列表名称.extend(新增元素)

list2 = ['X','T',4,'B']

list3 = ['H','Y','H',1]

list4 = [1,2,3]

print(list2)

list3.append(list4)

list2.extend(list3)

print(list2)

运行结果

['X', 'T', 4, 'B']

['X', 'T', 4, 'B', 'H', 'Y', 'H', 1, [1, 2, 3]]

从运行结果可以看出extend和append有很大的不同,extend会将list3中的每一个元素分别添加进list2中,并且会保留每个元素的原有结构类型,相当于把list2和list3接在了一起。

(5)insert

列表名称.insert(索引点, 插入元素)

list3 = ['H','Y','H',1]

print(list3)

list3.insert(2,'???')

print(list3)

运行结果

['H', 'Y', 'H', 1]

['H', 'Y', '???', 'H', 1]

这是一个内置的为list添加单个元素的方法,其两个参数分别为索引点和插入的元素。

5、查询

(1)len

len(列表名称)

list3 = ['H','Y','H']

x =len(list3)

print(x)

运行结果

3

len可以返回列表中元素个数。

(2)max / min

max(列表名称)/min(列表名称)

list3 = ['H','Y','H']

i =max(list3)

j =min(list3)

print("max in list3 is "+ i)

print("min in list3 is "+ j)

运行结果

max in list3 is Y

min in list3 is H

max和min会返回列表中最大和最小的元素,直接用数字可能会给大家只有int才可以取最值的误解,这里使用了一个有string组成的list。这个list依旧可以取到最值,但前提是列表中的元素是相同的数据类型,如果既有int又有string是不可以的。

(3)index

列表名称.index(待查找元素, 查找开始索引点, 查找结束索引点)

list3 = ['H','Y','H']

x = list3.index('Y',,len(list3))

print(x)

运行结果

1

index可以返回列表中某个元素所在的第一个索引点,这里返回的是索引点,不是第几个元素。比如上面代码得到的结果,可以直接用list3[1]定位至'Y'。

(4)count

列表名称.count(待查找元素)

list3 = ['H','Y','H']

x = list3.count('h')

print(x)

运行结果

我们可以利用count来计数某个列表中的某个元素的个数。

6、操作

(1)reverse

列表名称.reverse()

list2 = ['X','T',4,'B']

list2.reverse()

print(list2)

运行结果

['B', 4, 'T', 'X']

用reverse可以将列表反向。

(2)sort

列表名称.sort(可选参数可使用该参数的方法进行排序, reverse=True(倒序)/Flase(正序)(默认为flase))

list2 = ['X','T','4','B','H','Y','H']

list2.sort()

print(list2)

运行结果

['4', 'B', 'H', 'H', 'T', 'X', 'Y']

列表中如果存在不同类型的元素,是无法进行排序的,所以将4定义为str,我们可以看到sort将list2进行了排序,由于并没有对reverse进行设置,所以默认为Flase进行了正序排序。也没有选择排序方法,所以只是对list中的元素进行了正序排序。

list2 = ['XT','XT4','4','B','HYH','HY','H','XT4BHYH']

list2.sort(key=len,reverse=True)

print(list2)

运行结果

['XT4BHYH', 'XT4', 'HYH', 'XT', 'HY', '4', 'B', 'H']

在上面的代码中,我们在使用sort时对key进行了设置,所以排序的规则因为使用了方法len,变成了对元素长度的排序。而因为将reverse设置为True,排序的顺序变成了倒序。

(3)copy

列表名称.copy()

list2 = ['X','T',4,'B']

list = list2.copy()

print(list)

运行结果

['X', 'T', 4, 'B']

copy做的操作跟这个方法名称一样直观,就是将列表复制一份,并返回值。很多人不明白copy和直接用‘=’号赋值有什么区别,下面用一个小例子解释一下。

list2 = ['X','T',4,'B']

list3 = ['H','Y','H']

list4 = list2.copy()

list5 = list2

print(list4)

print(list5)

list2.extend(list3)

print(list4)

print(list5)

运行结果

['X', 'T', 4, 'B']

['X', 'T', 4, 'B']

['X', 'T', 4, 'B']

['X', 'T', 4, 'B', 'H', 'Y', 'H']

从运行结果可以看出,用‘=’直接赋值的list5在list2的值发生改变时也发生了改变,这是一个引用赋值。而使用copy得到的list4与list2再无关系,是两个相对独立的变量。

如果你有什么想了解的知识技术,就回复我们吧,说不定下期就是为你准备的哟~

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180325G0UGJ100?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券