在编程中,列表(List)是一种常用的数据结构,用于存储一组有序的元素。列表是Python中的内置数据类型之一,它允许你在一个变量中存储多个值,并且这些值可以是不同的数据类型,包括整数、浮点数、字符串、其他列表等。

Python中的列表使用方括号 [] 来定义,其中的元素之间用逗号 , 分隔。以下是列表的基本概念和特点:

  1. 有序性(Ordered):列表中的元素是按照它们的顺序存储和访问的。这意味着你可以通过索引来访问列表中的特定元素。

  2. 可变性(Mutable):列表是可变的,这意味着你可以添加、删除或修改列表中的元素。这使得列表在需要动态存储数据时非常有用。

  3. 元素的多样性(Heterogeneous):列表中的元素可以是不同的数据类型,例如整数、浮点数、字符串等。甚至可以包含其他列表作为元素,创建嵌套列表。

  4. 支持切片(Slicing):你可以使用切片操作来获取列表中的子列表。这允许你在不修改原始列表的情况下提取和操作其中的一部分数据。

  5. 长度(Length):你可以使用内置函数 len() 来获取列表中元素的数量。

  6. 迭代(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]]

案例列举:

  1. 列表也像字符串一样也有索引和切片和步长

    lst = ["金毛狮王", "张绍刚", "张无忌", "郭麒麟"]
    
    print(lst[0])
    print(lst[1:3])
    print(lst[::-1])

    运行结果:

    金毛狮王
    ['张绍刚', '张无忌']
    ['郭麒麟', '张无忌', '张绍刚', '金毛狮王']
  2. 索引如果超过范围会报错
    lst = ["金毛狮王", "张绍刚", "张无忌", "郭麒麟"]
    print(lst[3652]) # list index out of range

    运行结果:

        print(lst[3652])   # list index out of range
    ~~~^^^^^^
    IndexError: list index out of range
  3. 可以用for循环进行遍历
    lst = ["金毛狮王", "张绍刚", "张无忌", "郭麒麟"]
    
    for item in lst:
    print(item)

    运行结果:

    金毛狮王
    张绍刚
    张无忌
    郭麒麟
  4. 用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——第二章:列表的概念的更多相关文章

  1. Python 第二章-列表和元组

    第二章-列表和元组 2.0      在Python中,最基本的数据结构是序列(sequence).序列中的每个元素被分配一个序列号-即元素的位置, 也称为索引.第一个索引是0,第二个是1,以此类推. ...

  2. 简学Python第二章__巧学数据结构文件操作

    #cnblogs_post_body h2 { background: linear-gradient(to bottom, #18c0ff 0%,#0c7eff 100%); color: #fff ...

  3. machine learn in python 第二章2.1.1

    1大约 sklearn.datasets from sklearn.datasets import load_iris import numpy as np data = load_iris() da ...

  4. python基础教程-第二章-列表和元组

    本章将引入一个新的概念,:数据结构.数据结构是通过某种方式(例如对元素进行编号)组织在 一起的数据元素的集合,这些数据元素可以是数字或者字符,甚至可以是其他数据结构.在python中,最基本的数据结构 ...

  5. 《Python基础教程(第二版)》学习笔记 -> 第二章 列表和元组

    本章将引入一个新的概念:数据结构. 数据结构是通过某种方式阻止在一起的数据元素的集合,这些数据元素可以是数字或者字符,设置可以是其他数据结构. Python中,最基本的数据结构是序列(Sequence ...

  6. python第二章(2)列表

    names=["zhangyang","guyun","xiangpeng","leiming","xulia ...

  7. Python基础教程学习笔记:第二章 列表和元组

    1.序列中元素的索引: 第一个元素索引是0,第二个是1,依次递增 最后一个元素索引是-1,倒数第二个是-2,依次递减 2.序列(Sequence)的种类: 列表(list).元组(tuple).字符串 ...

  8. Python基础教程 读书笔记(2)第二章 列表和元组

    2.1序列概览 列表和元组的主要区别在于,列表可以修改,元组则不能.也就是说如果要根据要求来添加元素,那么列表可能会更好用;而出于某些原因,序列不能修改的时候,使用元组则更为合适.使用后者的理由通常是 ...

  9. 20190804-Python基础 第二章 列表和元组

    容器,Python支持一种数据结构的基本概念(容器,基本上就是可包含其他对象的对象.) 两种主要的容器是:序列(如列表和元组)和映射(如字典) Ps: 列表与元组区别,列表可修改,元组不能. 对序列的 ...

  10. python第二章:数据类型--小白博客

    标准数据类型 Python3 中有六个标准的数据类型: Number(数字) String(字符串) List(列表) Tuple(元组) Set(集合) Dictionary(字典) Python3 ...

随机推荐

  1. WPF开发必备

    类库 1.XamlFlair The goal of the XamlFlair library is to ease the implementation of common animations ...

  2. Teamcenter RAC 开发之《PlaceHolder》

    背景 做个swing表单,有时候想实现一些网页input标签的placeHolder提示,可能本人写vue or html写多,对某些细节有强迫症,所以找小下资料 实现方法(Swingx) 看源码

  3. 【AI 模型】首个 Joy 模型诞生!!!全民生成 Joy 大片

    接上一篇文章 "只要10秒,AI生成IP海报,解放双手",这次是全网第一个"共享joy模型",真的赚到了! 经过这段时间无数次的探索.试错.实验,最终积累了非常 ...

  4. 文心一言 VS 讯飞星火 VS chatgpt (117)-- 算法导论10.3 2题

    二.用go语言,对一组同构对象用单数组表示法实现,写出过程ALLOCATE-OBJECT和FREE-OBJECT. 文心一言: 在Go语言中,我们通常使用指针和结构体来表示和操作复杂的数据结构.对于一 ...

  5. 记一次有趣的 buffer overflow detected 问题分析

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 环境说明   无 前言   在我开发的一个实验和学习库中,在很久 ...

  6. 01背包问题的js解决方式

    如果你有兴趣看这个相信你已经对背包问题有所了解,所以关于背包问题的描述,我就不写了. 只记录一下自己对这个问题的一些看法和思考,于我而言,这个东西现在困扰我的是如何确定最优解. 实质上关于背包问题网上 ...

  7. 【译】NoClassDefFoundError和ClassNotFoundException的不同(转)

    https://www.jianshu.com/p/93d0db07d2e3 本文翻译自:Difference between NoClassDefFoundError vs ClassNotFoun ...

  8. x86平台SIMD编程入门(1):SIMD基础知识

    1.简介 SIMD(Single Instruction, Multiple Data)是一种并行计算技术,它通过向量寄存器存储多个数据元素,并使用单条指令同时对这些数据元素进行处理,从而提高了计算效 ...

  9. 解决ADS1.2与MDK4.7冲突问题

    需要添加2个系统变量. 1,在我的电脑点击属性--->高级--->环境变量---->系统变量,增加环境变量名: ARMCC5LIB 变量值:C:\Keil\ARM\ARMCC\lib ...

  10. Vue项目引用百度地图并实现搜索定位等功能

    Tip:本篇文章为案例分析,技术点较多,所以篇幅较长,认真阅览的你一定会学到很多知识. 前言:百度地图开放平台 给开发者们提供了丰富的地图功能与服务,使我们的项目中可以轻松地实现地图定位.地址搜索.路 ...