首页 > 编程语言 >Python学习笔记一:列表

Python学习笔记一:列表

时间:2023-04-14 12:00:39浏览次数:46  
标签:Python cars 元素 笔记 列表 奔驰 宝马 捷豹

一. 列表

1. 定义

  列表,是由一系列按照特定顺序排列的元素组成的一个有序集合。其中可以包含字母,数字,或者其他任何元素,每一个元素之间不一定有关系。不过,在创建列表时,建议还是将相同类型的元素或者相互之间有关联的元素放在一个列表中。

  鉴于包含的元素的数量,通常在给列表起名的时候,一般会以复数的形式出现。

# 创建一个关于汽车品牌的列表
cars = ['大众','丰田','宝马','捷豹','奔驰']

# 创建一个关于SMITH信息的列表
messages = ['smith','man',29,'teacher','england']  

2. 列表的访问 

  列表是一个有序集合,所以可以通过访问列表中每个元素的位置或者索引来访问。

  列表的索引值是从0开始的。

① 通过索引值访问列表元素

  以上面的cars列表为例,分别访问第一个元素和最后一个元素

>>> cars[0]
'大众'
>>> cars[-1]
'奔驰' 

② 已知列表中的元素值,求元素的索引值

>>> cars.index('大众')
0
>>> cars.index('奔驰')
4

3. 列表的修改

  想要修改列表中的元素,只需要对相应的元素进行重新赋值即可

# 将列表cars中第二个元素的值修改成劳斯莱斯
>>> cars[1] = '劳斯莱斯'
>>> cars
['大众', '劳斯莱斯', '宝马', '捷豹', '奔驰']

  如果只知道元素的值,不知道索引值,那么可以使用index()方法,先找到元素的索引值,再进行修改

4. 列表的添加

① 在列表的末尾追加元素 

# 列表cars的末尾追加一个新元素
>>> cars.append('法拉利')
>>> cars
['大众', '劳斯莱斯', '宝马', '捷豹', '奔驰', '法拉利'] 

② 在列表的特定位置插入元素

>>> cars.insert(1,'帕加尼')
>>> cars
['大众', '帕加尼', '劳斯莱斯', '宝马', '捷豹', '奔驰', '法拉利'] 

③ 在列表的末尾扩展/合并另一个列表的元素值

# 将cars列表合并到messages列表的末尾
>>> messages.extend(cars)
>>> messages
['smith', 'man', 29, 'teacher', 'england', '大众', '帕加尼', '劳斯莱斯', '宝马', '捷豹', '奔驰', '法拉利'] 

注意:

  方法append()和方法extend()都是将元素添加到列表的末尾,但两者是不同的

  • append()方法在向目标列表添加元素时,不管是单个元素还是一个列表,都会被当作一个整体
  • extend()方法则是将被追加列表的元素一一拆分,然后再追加到目标列表中
# append()追加列表
>>> messages.append(cars)
>>> messages
['smith', 'man', 29, 'teacher', 'england', ['大众', '帕加尼', '劳斯莱斯', '宝马', '捷豹', '奔驰', '法拉利']]

5. 列表的删除

① 使用del删除

>>> cars
['大众', '帕加尼', '劳斯莱斯', '宝马', '捷豹', '奔驰', '法拉利']
>>> del cars[1]
>>> cars
['大众', '劳斯莱斯', '宝马', '捷豹', '奔驰', '法拉利']

  关键字del的本质是将变量从内容中删除,变量的定义或者使用就是放在内容中的,将其从内容中删除,后续变量就不可再使用了。所以在删除列表中的元素时,尽力不要使用del。

  除了作为关键字,del还作为一个函数使用,作用是一样的

>>> del(cars[1])
>>> cars
['大众', '宝马', '捷豹', '奔驰', '法拉利'] 

② 使用pop()方法弹出元素

>>> cars
['大众', '宝马', '捷豹', '奔驰', '法拉利']
>>> popped = cars.pop(1)
>>> cars
['大众', '捷豹', '奔驰', '法拉利']
>>> popped
'宝马'

  使用方法pop()时,与其说是删除元素,不如说是将元素从原来的列表中弹了/取了出来,被弹出的元素依旧存在,只需要重新赋值给一个变量,即可再次使用。

③ 使用remove()方法移除

  remove()方法是在只知道元素的值,索引值不知道的情况下使用的。

  remove()方法只能移除目标元素第一次出现的值,如果目标元素存在多个,可以搭配循环来实现

>>> cars
['大众', '捷豹', '奔驰', '法拉利']
>>> cars.remove('法拉利')
>>> cars
['大众', '捷豹', '奔驰'] 

④ 使用clear()方法清空列表

>>> cars
['大众', '捷豹', '奔驰']
>>> cars.clear()
>>> cars
[]

6. 列表排序

6.1  永久性排序

  列表使用sort()方法对列表进行永久性排序,如果指定参数,则使用指定的比较函数排序。

  sort()方法语法:

list.sort(cmp = None,key = None,reverse = False)
-------------------------------------------------------------------
cmp:可选参数, 如果指定了该参数会使用该参数的方法进行排序
key:主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
reverse:排序规则,reverse = True 降序, reverse = False 升序(默认) 

① 无参数无比较函数:

>>> cars = ['大众','丰田','宝马','捷豹','奔驰']
>>> cars.sort()
>>> cars
['丰田', '大众', '奔驰', '宝马', '捷豹']

② 指定cmp

③ 指定key

6.2 临时性排序

  函数sorted()能够在保留列表原有顺序的基础上,同时对列表进行特定顺序的输出

  函数sorted()语法:

sorted(list,iterable,cmp=None,key=None,reverse=False)
----------------------------------------------------------------
iterable:可迭代对象
cmp:比较的函数,这个具有两个参数,参数的值都是从可迭代对象中取出,此函数必须遵守的规则为,大于则返回1,小于则返回-1,等于则返回0。
key:主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
reverse:排序规则,reverse = True 降序 , reverse = False 升序(默认)。  

① 无参数无比较函数 

>>> cars = ['大众','丰田','宝马','捷豹','奔驰']
>>> sorted(cars)
['丰田', '大众', '奔驰', '宝马', '捷豹']
>>> cars
['大众', '丰田', '宝马', '捷豹', '奔驰']  

② 指定cmp

③ 指定key

6.3 倒着打印

  reverse()方法:仅仅只是将列表的顺序倒着打印,而不对源顺序进行调整。

  reverse()方法对于列表的修改是永久性的,但可以再次使用,使列表恢复原状

>>> cars = ['大众','丰田','宝马','捷豹','奔驰']
>>> cars.reverse()
>>> cars
['奔驰', '捷豹', '宝马', '丰田', '大众']

7. 多维列表

  多维列表的元素是列表,即列表里嵌套列表,属性遵循一维列表的规则,最常见的有二维列表和三维列表。

二维列表:

# 创建一个二维列表,元素为德国,美国和中国三个国家的汽车品牌
>>> cars = [['奥迪','奔驰','宝马'],['雪佛兰','凯迪拉克','别克'],['红旗','吉利','长城']] 

三维列表: 

# 创建一个三维列表,元素为德国,美国和中国的一些信息
countries = [[['柏林', '慕尼黑', '斯图加特'], ['纽约', '华盛顿', '旧金山'], ['北京', '上海', '深圳']], [['奥迪', '奔驰', '宝马'], ['雪佛兰', '凯迪拉克', '别克'], ['红旗', '吉利', '长城']], [['西门子', '金介', 'Mann'], ['苹果', '谷歌', '摩托罗拉'], ['华为', '小米', 'Vivo']]]

  可以看出,三维列表的元素是二维列表,二维列表的元素是普通列表,以此类推,N维列表的元素则是N-1维列表

8. 列表的遍历

   列表的遍历就是从头到尾依次获取列表中的元素,在遍历的过程中可以完成查询,处理等操作。

① 使用for循环遍历列表

>>> cars = ['大众','丰田','宝马','捷豹','奔驰']
>>> for car in cars:
	print(car)
	
大众
丰田
宝马
捷豹
奔驰

在for循环中执行更多操作:

>>> for car in cars:
	print('这是一辆%s牌的汽车。\n' % car)

	
这是一辆大众牌的汽车。

这是一辆丰田牌的汽车。

这是一辆宝马牌的汽车。

这是一辆捷豹牌的汽车。

这是一辆奔驰牌的汽车。 

② 使用for循环和函数enumerate()遍历列表

  enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。

  enumerate()语法:

enumerate(list, [start=0])

  还是以cars列表作为目标,查看for循环和函数enumerate()是如何实现遍历的?

>>> cars = ['大众','丰田','宝马','捷豹','奔驰']
>>> for index,car in enumerate(cars,start=1):
	print(index,car)

	
1 大众
2 丰田
3 宝马
4 捷豹
5 奔驰 

③ 使用函数range()和len()遍历列表

  除了使用for循环和函数enumrate()的结合,来实现既可以输出数据,又可以表明数据下标的功能,数字函数range()和len()也可以实现同样的功能

  函数range():可以生成一系列的数字,从起始值开始,到终止值结束,不包括终止值,通常会结合循环使用。具体语法:

range(start,end,step)
start:起始值,不写时默认为0
end:终止值
step:步长,不写时默认为1

>>> for i in range(1,10,2):
print(i)


1
3
5
7
9

  函数len():返回对象(字符,列表,元组,字典等)的长度 

>>> cars
['大众', '丰田', '宝马', '捷豹', '奔驰']
>>> len(cars)
5

  利用数字函数range()和len()实现列表的遍历,既可以输出数据下标,又可以不输出,全看自身需求

>>> cars
['大众', '丰田', '宝马', '捷豹', '奔驰']
>>> for i in range(len(cars)):   
	print(i,cars[i])

	
0 大众
1 丰田
2 宝马
3 捷豹
4 奔驰 

④ 使用while循环遍历列表

>>> cars
['大众', '丰田', '宝马', '捷豹', '奔驰']
>>> i = 0
>>> while i < len(cars):
	print(cars[i])
	i+=1

	
大众
丰田
宝马
捷豹
奔驰

⑤ 多维列表的遍历

  多维列表的遍历和普通列表的遍历方法是一样的,只不过多了一层循环嵌套

# 二维列表的遍历
>>> cars = [['奥迪','奔驰','宝马'],['雪佛兰','凯迪拉克','别克'],['红旗','吉利','长城']] >>> for country_cars in cars: for car in country_cars: print(car) 奥迪 奔驰 宝马 雪佛兰 凯迪拉克 别克 红旗 吉利 长城

9. 列表切片  

  切片,顾名思义就是将序列中的一部分切下来,获得一个新的序列。

  切片适用于字符串,列表,元组,和字典等,是Python序列的重要操作之一。

  要创建切片,则要指定需要的第一个元素和最后一个元素的索引值,和range()函数中的索引值使用一 样,切片使用中的索引依旧不包含最后一个元素。

# 取列表cars的前三个元素
>>> cars = ['大众','丰田','宝马','捷豹','奔驰']
>>> cars1 = cars[0:3]
>>> cars1
['大众', '丰田', '宝马']

# 不指定起始索引,默认从头开始读取
>>> cars2 = cars[:3]
>>> cars2
['大众', '丰田', '宝马']

# 不指定终止索引,默认读取到末尾
>>> cars3 = cars[3:]
>>> cars3
['捷豹', '奔驰']

# 既不指定初始索引,也不指定种植索引,相当于复制
>>> cars4 = cars[:]
>>> cars4
['大众', '丰田', '宝马', '捷豹', '奔驰']

  索引值除了是正值之外,还可以是负值,从-1开始,书写的时候,依旧是小值在前,大值在后

# 取列表的倒数第二个和倒数第三个元素
>>> cars
['大众', '丰田', '宝马', '捷豹', '奔驰']
>>> cars5 = cars[-3:-1]
>>> cars5
['宝马', '捷豹']

# 不指定起始索引,默认从头读取
>>> cars6 = cars[:-1]
>>> cars6
['大众', '丰田', '宝马', '捷豹']

# 不指定终止索引,默认读取到末尾
>>> cars7 = cars[-3:]
>>> cars7
['宝马', '捷豹', '奔驰']

  列表切片之后的序列,依旧还是列表,所以列表的各种格则依旧遵循

  遍历切片:

>>> cars
['大众', '丰田', '宝马', '捷豹', '奔驰']
>>> cars1 = cars[1:3]
>>> cars1
['丰田', '宝马']
>>> for car in cars1:
	print(car)

	
丰田
宝马

  

  

 

 

 

 


  

  

 

  

 

 

二. 元组

三. 字典

标签:Python,cars,元素,笔记,列表,奔驰,宝马,捷豹
From: https://www.cnblogs.com/zhouyang-123/p/17296713.html

相关文章

  • [深入推导]CS231N assignment 2#4 _ 卷积神经网络 学习笔记 & 解析
    卷积神经网络基本算法实现卷积神经网络应该算是图像处理中绝对的主流了,关于算法得基本思想我在之前也学的比较懂了,这点如果不了解网上有很多教程.不过我并没有用代码亲自实现它.我们首先确定怎么编写.前面搞全连接网络总是会想着怎么去简化运算,现在我们接触了新的网络,......
  • 笔记
    1.课程大纲-springboot框架1.什么是Springboot以及Springboot的特点。2.快速搭建springboot项目3.springboot常用的配置文件类型.4.读取springboot配置文件的内容5.多环境配置6.springboot整合数据源。7.springboot整合mybatis.8.springboot整合定时器。2.什么......
  • 前端小知识点扫盲笔记记录8
    前言我是歌谣放弃很容易但是坚持一定很酷今天继续对前端知识的小结命令模式宏命令<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="......
  • Python+Requests+Pytest接口自动化测试微信接口实例
         pytest.ini配置文件[pytest]log_cli=truelog_level=NOTSETlog_format=%(asctime)s%(levelname)s%(message)slog_date_format=%Y-%m-%d%H:%M:%Saddopts=-vs--alluredir./temp-m'file'log_file=./log/test.loglog_file_level=infol......
  • Python中re.finditer函数的使用
    re模块简介re模块是Python标准库中的正则表达式模块。正则表达式是一种特殊的字符串处理方式,常用于匹配文本中的特定模式。re模块可以提供针对正则表达式的支持。re.finditer()函数re.finditer(pattern,string,flags=0)函数功能:扫描整个字符串,并返回对每个匹配项的迭......
  • 用python和批处理命令实现Markdown内嵌图片
    img.py代码如下importbase64fromPILimportImage,ImageGrabimg_name="C:\\Users\\Lenovo\\Desktop\\grab_clipboard.png"#获取并保存剪贴板图片im=ImageGrab.grabclipboard()ifisinstance(im,Image.Image):#print("Image:size:%s,mode:%......
  • Python与c语言的区别与联系
    Python与c语言都是一种机器学习语言,进过长时间的学习和总结,我将Python与c语言的一些特点总结成以下几点,不全面还望多多指正。1、因为C语言是编译型语言,python是解释型语言,所以python的执行速度没有C语言那么快。2、基本元素的区别,python中的基本元素相比于C语言大大减少,比较特殊......
  • Python 之操作redis
    一、示例代码importredispool=redis.ConnectionPool(host='127.0.0.1',port=6379,password="",max_connections=10)redis_obj=redis.Redis(connection_pool=pool,decode_responses=True)#操作字符串redis_obj.set(name="password",valu......
  • python版 异常重试的次数,间隔的装饰器涵数
    fromfunctoolsimportwrapsfromthreadingimportEventdefretry_exception(retry_count=0,interval_wait=0):defwrap(f):@wraps(f)deffunc(*args,**kwargs):try:returnf(*args,**kwargs)exc......
  • Python Http 请求
    如果要进行客户端和服务器端之间的消息传递,我们可以使用HTTP协议请求HTTP协议请求主要分6种类型(GET和POST较常用)1)GET请求通过URL网址传递信息,可以直接在URL中写上要传递的信息,也可以由表单进行传递(表单中的信息会自动转化为URL地址中的数据,通过URL地址传递)备注:已经取得资源,并......