百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT技术 > 正文

python教程从基础到精通,第5课—List列表

wptr33 2024-12-24 16:01 24 浏览

python教程从基础到精通,第5课—List列表

Hello,小伙伴们,又见面啦!

上一章节咱们已学习了七大数据类型的Number(数字)、Boolean(布尔类型)、String(字符串),今天咱们来研究进一步学习List(列表)

1、List(列表)的定义

List的定义方法有很多种,下面以实例来讲,代码如下:

list1 = [] # 创建一个空列表,list1=list(),显示为[]
list2 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
list3 = [
'a', 'b', 'c', 'd', 'e', 'f', 'g']
list4 =
list("abcdefg") # ['a', 'b', 'c', 'd', 'e', 'f', 'g']
list5 = ["abcdefg"] # 只有一个字符串元素
list6 = ['red', 'green', 'blue', 'yellow', 'white', 'black']
list7 = [
1, 2, "hello", 'world'] # 4个元素,前2个为数字,后2个为字符串

是不是很简单,确实。但是如果要创建一个很多的列表呢?有没有更加便捷、高效的定义方法?当然有,我们可以在列表中使用推导式的方法来创建列表,示例代码如下:

lista = [] * 10 # []
listb = [1] * 10 # [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
listc = [[] for i in range(10)] # [[], [], [], [], [], [], [], [], [], []]
listd = [i for i in range(1, 10)] # [1, 2, 3, 4, 5, 6, 7, 8, 9]
liste = ['1' for i in range(10)] # ['1', '1', '1', '1', '1', '1', '1', '1', '1', '1']
listf = [i * 2 for i in range(10) if i * 2 % 8 == 0] # [0, 8, 16]找出符合条件(i*2%8==0)的值

那么2维或多维列表又如何定义呢?咱们直接看例子:

list1 = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] #定义了一个3行3列的3维列表
list2 = [[1, 2, 3, 4, 5], 'dotcpp', {1, 2, 3, }, ('www', 'dotcpp', 'com')] #定义了一个包含列表、字符串、集合、元组的4维列表
#推导式创建方法如下:

my_list = [[i for i in range(1,7)] for j in range(1,7)]
print(my_list)

如果如下:

[[1, 2, 3, 4, 5, 6],

[1, 2, 3, 4, 5, 6],

[1, 2, 3, 4, 5, 6],

[1, 2, 3, 4, 5, 6],

[1, 2, 3, 4, 5, 6],

[1, 2, 3, 4, 5, 6]]

2、List(列表)的访问

先来定义一个List,如下:

list 1= ['red', 'green', 'blue', 'yellow', 'white', 'black']

list1总共有6个元素,分别是:'red', 'green', 'blue', 'yellow', 'white', 'black' 6个字符串元素,每个元素都有index索引与value值属性,整个列表有多少个元素可以用len()方法获得。

第1元素的index是0,第2个元素的index是1,以此类推;最后一个元素的index是len(list1)-1,也可以用-1表示,因此倒数第二个元素的索引是-2,其他类推。

要访问列表中的值可以通过索引来实现,例如:

list1 = ['red', 'green', 'blue', 'yellow', 'white', 'black']
print(list1[0]) # red
print(list1[1]) # green
print(list1[5]) # black
print(list1[len(list1)-1]) # black
print(list1[-1]) # black

如果想知道某个元素的索引呢,可以通过以下代码获得:

list1 = ['red', 'green', 'blue', 'yellow', 'white', 'black']

print(list1.index("blue")) # 2

3、List(列表)的切片

List列表切片是非常有用的功能,示例如下:

list1 = ['www', '.', 'test', '.', 'com', '.', 'cn']
print(list1) # ['www', '.', 'test', '.', 'com', '.', 'cn']
print(list1[6]) # 下标是从0开始的,[6]个元素:cn
print(list1[-2]) # 倒数第2个元素:.
print(list1[:3]) # 前3个元素:['www', '.', 'test']
print(list1[3:]) # 第3个元素之后的元素(不包含第3个字符):['.', 'com', '.', 'cn']
print(list1[2:6]) # 第2个元素之后到第6个元素组成的列表:['test', '.', 'com', '.']
print(list1[::2]) # 偶数位置的元素组成的列表:['www', 'test', 'com', 'cn']
print(list1[::-1]) # 逆置列表:['cn', '.', 'com', '.', 'test', '.', 'www']

4、列表的操作方法

1) 改变元素的值

列表的元素是可以改变的,上面讲了可以直接通过索引或下标来访问元素,那么我们可以在访问元素值的时候赋予其新的值,示例代码如下:

list6 = ['red', 'green', 'blue', 'yellow', 'white', 'black']
list6[
0] = "orange"
list6[3] = 'purple'
print(list6) # ['orange', 'green', 'blue', 'purple', 'white', 'black']


2) 增加元素append()、extend()方法

list.append(obj),在列表末尾添加新的对象

list.extend(seq),在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)

示例代码:

list1 = ['red', 'green', 'blue']
list2 = [
1, 2, 3]
list1.append(
"grey")
print(list1) #['red', 'green', 'blue', 'grey']
list1.extend(list2)
print(list1) #['red', 'green', 'blue', 'grey', 1, 2, 3]


3) 插入元素insert()方法

list.insert(index,obj),在索引index位置插入对象obj

list2 = [1, 2, 3]

list2.insert(2,[7,8,9]) # 在索引为2的位置插入对象
print(list2) #[1, 2, [7, 8, 9], 3]


4) 删除元素remove()方法、pop()方法

list.remove(obj),移除列表中某个值的第一个匹配项

list.pop([index=-1]),移除列表中的一个元素(默认最后一个元素),并且返回该元素的值

list6 = ['red', 'green', 'blue', 'yellow', 'white', 'black']
list6.remove(
'black')
print(list6) # ['red', 'green', 'blue', 'yellow', 'white']
list6.remove(list6[4])
print(list6) # ['red', 'green', 'blue', 'yellow']
a = list6.pop() # 默认删除最后一个,返回被删除的值
print(list6, a) # ['red', 'green', 'blue'] yellow
list6.pop(1) # 删除下标为1的值
print(list6) # ['red', 'blue']


5) 对列表进行排序sort()方法、reverse()方法

list.sort( key=None, reverse=False),对原列表按ASCII码进行排序,两个参数均可省。

list1 = ['red', 'green', 'blue', 'yellow', 'white', 'black']
list2 = [
'red', 'green', 'blue', 'yellow', 'white', 'black']
list3 = [
'red', 'green', 'blue', 'yellow', 'white', 'black']
list1.sort()
#按字母顺序排序,['black', 'blue', 'green', 'red', 'white', 'yellow']
list2.sort(reverse=True) #按字母逆序排序,['yellow', 'white', 'red', 'green', 'blue', 'black']
list3.sort(key=len) #按长度排序, ['red', 'blue', 'green', 'white', 'black', 'yellow']


基中key可以是做函数,python有内置的函数可以直接用,常用的内置key函数包括:

(1)str.lower() / str.upper():将字符串转换为小写/大写字母后再进行比较。适用于字符串的大小写不敏感的情况。

例如,按照字符串的字母顺序排序:

lst = ['abc', 'A', 'Ab']

lst.sort(key=str.lower)

print(lst)

# 输出:['A', 'Ab', 'abc']

(2)abs():返回数值的绝对值。适用于按照数值大小排序的情况。

例如,按照数值的绝对值大小排序:

lst = [-3, 1, -2]

lst.sort(key=abs)

print(lst)

# 输出:[1, -2, -3]

(3)len():返回对象的长度。适用于按照对象大小排序的情况。

例如,按照字符串长度排序:

lst = ['abc', 'a', 'ab']

lst.sort(key=len)

print(lst)

# 输出:['a', 'ab', 'abc']

list.reverse(),反向列表中元素,代码如下:

list1 = ['red', 'green', 'blue', 'yellow', 'white', 'black']
list1.reverse()
print(list1) # ['black', 'white', 'yellow', 'blue', 'green', 'red']


6) 列表的清空clear()与复制copy()

list1 = ['red', 'green', 'blue']
list2 = [
1, 2, 3]
list2 = list1.copy()
# 列表被新的列表所覆盖
list1.clear() # 清空列表
print(list1) # []
print(list2) # ['red', 'green', 'blue']


7) 列表的的计数方法count()

list.count(obj),统计某个元素在列表中出现的次数

list1 = ['red', 'green', 'blue', 'red']
print(list1.count('blue')) # 1
print(list1.count('red')) # 2

5、其它相关方法或函数

示例代码:

list1 = ['red', 'green', 'blue', 'red']
str1 =
"good boy"
print(len(list1)) # 4
print(max(list1)) # red
print(min(list1)) # blue
print(list(str1)) # ['g', 'o', 'o', 'd', ' ', 'b', 'o', 'y']

愉快学习的时光总是过得很快,一不小心又到结尾啦。

先来给自己一个奖励,双手举起,yeah!

有什么问题可以关注我/私信我/加好友,让我们一起成长吧。


相关推荐

redis的八种使用场景

前言:redis是我们工作开发中,经常要打交道的,下面对redis的使用场景做总结介绍也是对redis举报的功能做梳理。缓存Redis最常见的用途是作为缓存,用于加速应用程序的响应速度。...

基于Redis的3种分布式ID生成策略

在分布式系统设计中,全局唯一ID是一个基础而关键的组件。随着业务规模扩大和系统架构向微服务演进,传统的单机自增ID已无法满足需求。高并发、高可用的分布式ID生成方案成为构建可靠分布式系统的必要条件。R...

基于OpenWrt系统路由器的模式切换与网页设计

摘要:目前商用WiFi路由器已应用到多个领域,商家通过给用户提供一个稳定免费WiFi热点达到吸引客户、提升服务的目标。传统路由器自带的Luci界面提供了工厂模式的Web界面,用户可通过该界面配置路...

这篇文章教你看明白 nginx-ingress 控制器

主机nginx一般nginx做主机反向代理(网关)有以下配置...

如何用redis实现注册中心

一句话总结使用Redis实现注册中心:服务注册...

爱可可老师24小时热门分享(2020.5.10)

No1.看自己以前写的代码是种什么体验?No2.DooM-chip!国外网友SylvainLefebvre自制的无CPU、无操作码、无指令计数器...No3.我认为CS学位可以更好,如...

Apportable:拯救程序员,IOS一秒变安卓

摘要:还在为了跨平台使用cocos2d-x吗,拯救objc程序员的奇葩来了,ApportableSDK:FreeAndroidsupportforcocos2d-iPhone。App...

JAVA实现超买超卖方案汇总,那个最适合你,一篇文章彻底讲透

以下是几种Java实现超买超卖问题的核心解决方案及代码示例,针对高并发场景下的库存扣减问题:方案一:Redis原子操作+Lua脚本(推荐)//使用Redis+Lua保证原子性publicbo...

3月26日更新 快速施法自动施法可独立设置

2016年3月26日DOTA2有一个79.6MB的更新主要是针对自动施法和快速施法的调整本来内容不多不少朋友都有自动施法和快速施法的困扰英文更新日志一些视觉BUG修复就不翻译了主要翻译自动施...

Redis 是如何提供服务的

在刚刚接触Redis的时候,最想要知道的是一个’setnameJhon’命令到达Redis服务器的时候,它是如何返回’OK’的?里面命令处理的流程如何,具体细节怎么样?你一定有问过自己...

lua _G、_VERSION使用

到这里我们已经把lua基础库中的函数介绍完了,除了函数外基础库中还有两个常量,一个是_G,另一个是_VERSION。_G是基础库本身,指向自己,这个变量很有意思,可以无限引用自己,最后得到的还是自己,...

China's top diplomat to chair third China-Pacific Island countries foreign ministers' meeting

BEIJING,May21(Xinhua)--ChineseForeignMinisterWangYi,alsoamemberofthePoliticalBureau...

移动工作交流工具Lua推出Insights数据分析产品

Lua是一个适用于各种职业人士的移动交流平台,它在今天推出了一项叫做Insights的全新功能。Insights是一个数据平台,客户可以在上面实时看到员工之间的交流情况,并分析这些情况对公司发展的影响...

Redis 7新武器:用Redis Stack实现向量搜索的极限压测

当传统关系型数据库还在为向量相似度搜索的性能挣扎时,Redis7的RedisStack...

Nginx/OpenResty详解,Nginx Lua编程,重定向与内部子请求

重定向与内部子请求Nginx的rewrite指令不仅可以在Nginx内部的server、location之间进行跳转,还可以进行外部链接的重定向。通过ngx_lua模块的Lua函数除了能实现Nginx...