Python——第二章:列表的概念
在编程中,列表(List)是一种常用的数据结构,用于存储一组有序的元素。列表是Python中的内置数据类型之一,它允许你在一个变量中存储多个值,并且这些值可以是不同的数据类型,包括整数、浮点数、字符串、其他列表等。
Python中的列表使用方括号 [] 来定义,其中的元素之间用逗号 , 分隔。以下是列表的基本概念和特点:
有序性(Ordered):列表中的元素是按照它们的顺序存储和访问的。这意味着你可以通过索引来访问列表中的特定元素。
可变性(Mutable):列表是可变的,这意味着你可以添加、删除或修改列表中的元素。这使得列表在需要动态存储数据时非常有用。
元素的多样性(Heterogeneous):列表中的元素可以是不同的数据类型,例如整数、浮点数、字符串等。甚至可以包含其他列表作为元素,创建嵌套列表。
支持切片(Slicing):你可以使用切片操作来获取列表中的子列表。这允许你在不修改原始列表的情况下提取和操作其中的一部分数据。
长度(Length):你可以使用内置函数
len()来获取列表中元素的数量。迭代(Iteration):你可以使用循环来迭代(遍历)列表中的元素,对每个元素执行特定的操作。
以下是创建和操作列表的一些基本示例:
# 创建一个列表
fruits = ["apple", "banana", "cherry"]
# 获取列表长度
length = len(fruits)
# 访问列表元素
first_fruit = fruits[0] # 获取第一个元素
# 修改列表元素
fruits[1] = "orange"
# 添加元素到列表末尾
fruits.append("grape")
# 删除列表中的元素
del fruits[0] # 删除第一个元素
# 迭代列表元素
for fruit in fruits:
print(fruit)
列表里可以放列表,也可以放任意不同数据类型的东西,函数、类、对象也都可以放入
a = ["张三丰", "张无忌", "张绍刚", [1,2,3,True,aaaa]]
案例列举:
- 列表也像字符串一样也有索引和切片和步长
lst = ["金毛狮王", "张绍刚", "张无忌", "郭麒麟"] print(lst[0])
print(lst[1:3])
print(lst[::-1])运行结果:
金毛狮王
['张绍刚', '张无忌']
['郭麒麟', '张无忌', '张绍刚', '金毛狮王'] - 索引如果超过范围会报错
lst = ["金毛狮王", "张绍刚", "张无忌", "郭麒麟"]
print(lst[3652]) # list index out of range运行结果:
print(lst[3652]) # list index out of range
~~~^^^^^^
IndexError: list index out of range - 可以用for循环进行遍历
lst = ["金毛狮王", "张绍刚", "张无忌", "郭麒麟"] for item in lst:
print(item)运行结果:
金毛狮王
张绍刚
张无忌
郭麒麟 - 用len可以拿到列表的长度
lst = ["金毛狮王", "张绍刚", "张无忌", "郭麒麟"]
print(len(lst))运行结果:
4
列表用单引号或双引号括
lst1 = ['赵敏', "张无忌", "武则天", '嬴政', '马超']
lst2 = [赵敏, 张绍刚, 张无忌, 武则天, 嬴政, 马超]
这两个lst列表之间有一个关键区别,即它们包含的元素类型不同。
lst1 = ['赵敏', "张无忌", "武则天", '嬴政', '马超']
print(lst)
lst1是一个包含字符串元素的列表。每个元素都是用单引号或双引号括起来的字符串。
lst2 = [赵敏, 张绍刚, 张无忌, 武则天, 嬴政, 马超]
print(lst2)
执行结果
Traceback (most recent call last):
File "D:\Python\test.py", line 40, in <module>
lst2 = [赵敏, 张绍刚, 张无忌, 武则天, 嬴政, 马超]
^^
NameError: name '赵敏' is not defined
lst2看起来似乎包含了未引用的标识符,这会导致语法错误。通常情况下,标识符(变量名)应该使用单引号或双引号括起来,以表示它们是字符串。如果没有括起来,Python会将它们解释为变量名,而不是字符串。
如果你的意图是将这些元素视为字符串,那么你应该使用引号将它们括起来,就像第一个lst1一样:
lst1 = ['赵敏', "张无忌", "武则天", '嬴政', '马超']如果你的意图是将这些元素视为变量名,那么你需要确保这些变量已经定义,否则会导致NameError。例如,如果你已经定义了这些变量,那么第二个lst2将是有效的:
赵敏 = "赵敏" 张绍刚 = "张绍刚" 张无忌 = "张无忌" 武则天 = "武则天" 嬴政 = "嬴政" 马超 = "马超"
lst2 = [赵敏, 张绍刚, 张无忌, 武则天, 嬴政, 马超]
print(lst2)
列表的排序
1、列表会按照你存放的顺序来保存
lst = [1, 2, 3, "麻花藤", "武大郎"]
print(lst)
2、对列表进行升序、降序排序
lst = [222, 444, 123, 43, 123,43243, 111]
lst.sort() # 对列表进行升序排序
lst.sort(reverse=True) # reverse: 翻转
print(lst)
列表的嵌套
lst = ["abc", "def", ["呵呵哒", "妈妈呀", "苦苦脊瓦", ["可乐", "scrapy", 123]], 'aed', "qpr"]
print(lst[2][3][1])
lst[2][3][1] = lst[2][3][1].upper()
print(lst)
列表的循环删除(*)
错误操作
lst = ['赵敏', '张绍刚', '张无忌', '武则天', '嬴政', '马超']
for item in lst:
if item.startswith("张"):
lst.remove(item) # 有bug
print(lst)
输出结果:
['赵敏', '张无忌', '武则天', '嬴政', '马超']
上面这个代码的目的是从一个列表中删除所有以"张"开头的元素。不过,这个代码在Python中有一个常见的问题。当你试图在迭代一个列表的同时修改它时,会出现一个错误。因为在迭代过程中修改列表会影响迭代器的状态。
安全稳妥的循环删除方式:
将要删除的内容保存在一个新列表中. 循环新列表. 删除老列表
lst = ['赵敏', '张绍刚', '张无忌', '武则天', '嬴政', '马超']
temp = [] # 准备一个临时列表, 负责存储要删除的内容
for item in lst:
if item.startswith("张"):
# lst.remove(item) # 有bug
temp.append(item) # 把要删除的内容记录下来
for item in temp:
lst.remove(item) # 去原列表中进行删除操作
print(lst)
Python——第二章:列表的概念的更多相关文章
- Python 第二章-列表和元组
第二章-列表和元组 2.0 在Python中,最基本的数据结构是序列(sequence).序列中的每个元素被分配一个序列号-即元素的位置, 也称为索引.第一个索引是0,第二个是1,以此类推. ...
- 简学Python第二章__巧学数据结构文件操作
#cnblogs_post_body h2 { background: linear-gradient(to bottom, #18c0ff 0%,#0c7eff 100%); color: #fff ...
- machine learn in python 第二章2.1.1
1大约 sklearn.datasets from sklearn.datasets import load_iris import numpy as np data = load_iris() da ...
- python基础教程-第二章-列表和元组
本章将引入一个新的概念,:数据结构.数据结构是通过某种方式(例如对元素进行编号)组织在 一起的数据元素的集合,这些数据元素可以是数字或者字符,甚至可以是其他数据结构.在python中,最基本的数据结构 ...
- 《Python基础教程(第二版)》学习笔记 -> 第二章 列表和元组
本章将引入一个新的概念:数据结构. 数据结构是通过某种方式阻止在一起的数据元素的集合,这些数据元素可以是数字或者字符,设置可以是其他数据结构. Python中,最基本的数据结构是序列(Sequence ...
- python第二章(2)列表
names=["zhangyang","guyun","xiangpeng","leiming","xulia ...
- Python基础教程学习笔记:第二章 列表和元组
1.序列中元素的索引: 第一个元素索引是0,第二个是1,依次递增 最后一个元素索引是-1,倒数第二个是-2,依次递减 2.序列(Sequence)的种类: 列表(list).元组(tuple).字符串 ...
- Python基础教程 读书笔记(2)第二章 列表和元组
2.1序列概览 列表和元组的主要区别在于,列表可以修改,元组则不能.也就是说如果要根据要求来添加元素,那么列表可能会更好用;而出于某些原因,序列不能修改的时候,使用元组则更为合适.使用后者的理由通常是 ...
- 20190804-Python基础 第二章 列表和元组
容器,Python支持一种数据结构的基本概念(容器,基本上就是可包含其他对象的对象.) 两种主要的容器是:序列(如列表和元组)和映射(如字典) Ps: 列表与元组区别,列表可修改,元组不能. 对序列的 ...
- python第二章:数据类型--小白博客
标准数据类型 Python3 中有六个标准的数据类型: Number(数字) String(字符串) List(列表) Tuple(元组) Set(集合) Dictionary(字典) Python3 ...
随机推荐
- 【matplotlib基础】--手绘风格
Matplotlib 中有一个很有趣的手绘风格.如果不是特别严肃的分析报告,使用这个风格能给枯燥的数据分析图表带来一些活泼的感觉. 使用手绘风格非常简单,本篇主要手绘风格的效果以及如何配置中文的支持. ...
- 【python爬虫】爬虫所需要的爬虫代理ip是什么?
前言 在进行爬虫程序开发时,经常会遇到访问被限制的网站,这时就需要使用代理 IP 来进行访问.本文将介绍代理 IP 的概念及使用方法,帮助读者更好地应对爬虫程序中的访问限制问题.同时,本文还将提供一些 ...
- angular + express 实现websocket通信
最近需要实现一个功能,后端通过TCP协议连接雷达硬件的控制器,前端通过websocket连接后端,当控制器触发消息的时候,把信息通知给所以前端: 第一个思路是单独写一个后端服务用来实现websocke ...
- Fisher线性判别分析(二分类)
LDA(Linear Discriminant Analysis)是一种经典的线性判别方法,又称Fisher判别 分析.该方法思想比较简单:给定训练集样例,设法将样例投影到一维的直线 上,使得同类样例 ...
- SYN泛洪攻击详解
SYN攻击利用的是TCP的三次握手机制,攻击端利用伪造的IP地址向被攻击端发出请求,而被攻击端发出的响应 报文将永远发送不到目的地,那么被攻击端在等待关闭这个连接的过程中消耗了资源,如果有成千上万的这 ...
- gitbook在线记事本
https://app.gitbook.com/ About this template: An Internal Wiki to lay out everything anyone needs to ...
- 中山市 香山杯2023 Misc pintu
大便题目啊,跟拼图没有半毛钱关系 附件给我们4703张图片,而且给了tip:8->10,且这些图片的宽度都是一样的. 首先我们考虑将黑色图片当作0,白色图片当作1,将这些按编号顺序将这些图片转成 ...
- [ABC310D] Peaceful Teams 题解
Peaceful Teams 题目大意 将 \(n\) 个人分成 \(T\) 组,要求每组不能包含敌对的人,问有多少种分法. 思路分析 注意到 \(n,T\) 均很小,考虑爆搜. 注意到直接枚举会枚举 ...
- 好用的解决PowerDesign中字体图片太小分辨率问题【已解决】
熟悉数据库设计的小伙伴可能都会用到一款名叫PowerDesign的工具 但是我在使用这款工具时候发现界面中的图标和文字都非常小,看的人眼睛疼,如下图 我刚开始修改了软件的字体大小,发现只是字稍微大了点 ...
- 生成ios证书最简单的方法
使用了hbuilderx的uniapp来开发app很方便,但是官网的文档,生成ios的私钥证书却需要使用mac电脑来生成,假如没有mac电脑就无法使用教程的方法来生成ios证书. 因为hbuilder ...