当前位置: 首页 > news >正文

Python基础之列表

列表初识

列表的作用和定义

列表是python中使用最频繁的数据类型,在其他语言中一般称为数组;
用一个变量存储多个数据;
列表存储多个数据时,在中括号之间用逗号分隔多个数据;

语法定义:

变量名 = [数据1, 数据2, 数据3,...]
eg:
name_list = ["zhangsan", "lisi", "wangwu"]

列表存储数据的方式和取数据

  • 列表按顺序存储数据,从0开始,逐渐递增的存,你可以理解为琅琊榜中琅琊阁的信息柜,一个一个存过去,并且给柜子从0开始编号,每次+1;
  • 取数据的时候只需要按照柜子编号取即可;
  • 列表的索引从0开始,索引就是数据在列表中的数据编号,索引又可以被称为下标。从列表中取值时,如果超出索引范围,就会报错。

定义和取数据示例如下(在交互式下):

name_list = ["zhangsan", "lisi", "wangwu"]
name_list
['zhangsan', 'lisi', 'wangwu']
name_list[0]
'zhangsan'
name_list[1]
'lisi'

列表方法

列表方法查看

在ipython3交互式下,先定义一个空列表;再 空列表. 后面敲一下tab键,即可显示列表常用方法;例如:

In [1]: name_list = []

In [2]: name_list.
name_list.append   name_list.count    name_list.insert   name_list.reverse
name_list.clear    name_list.extend   name_list.pop      name_list.sort
name_list.copy     name_list.index    name_list.remove   

In [2]: name_list.

由此可见,列表方法有如下这些:

name_list.append   name_list.count    name_list.insert   name_list.reverse
name_list.clear    name_list.extend   name_list.pop      name_list.sort
name_list.copy     name_list.index    name_list.remove 

列表常用方法统计

序号分类关键字/函数/方法说明
1增加list.insert(index, data)在指定位置插入数据
list.append(data)在末尾追加数据
list.extend(list2)将列表2的数据追加到列表
2修改list[index]=data修改指定索引的数据
3删除del list[index]删除指定索引的数据
list.remove(data)删除第一个出现的指定数据
list.pop()删除末尾数据
list.pop(index)删除指定索引数据
list.clear()清空列表
4统计len(list)测量列表长度
list.count(data)检查数据在列表中出现的次数
5排序list.sort()升序排序
list.sort(reverse=True)降序排序
list.reverse()逆序,反转

列表取值和取索引(index)

name_list = ["zhangsan", "lisi", "wangwu"]

# 列表取值,已知 内容在列表的位置(索引),根据索引来取值;注意,如果索引值超过范围的话,就会报错
print(name_list[2])

# 列表取索引,已知 内容,根据内容来确定内容在列表的位置;
# 注意,如果查的内容不是列表中的内容的话,就会报错
print(name_list.index("lisi"))

列表 修改指定索引的数据

name_list = ["zhangsan", "lisi", "wangwu"]
# 修改指定索引的数据;注意,如果索引超过了范围,就会报错,而不是在末尾新建一个数据,那是append该做的事
name_list[2] = "wangliu"
print(name_list)

列表增加(append,insert,extend)

1.append

name_list = ["zhangsan", "lisi", "wangwu"]
# 3.1 append 在列表末尾追加
name_list.append("liudi")
print(name_list)  # ['zhangsan', 'lisi', 'wangwu', 'liudi']

2.insert

name_list = ["zhangsan", "lisi", "wangwu"]
#3.2 insert 向列表指定索引位置添加数据,注意,不是进行替换,只是挤进去而已
print(name_list)  # ['zhangsan', 'lisi', 'wangwu']
name_list.insert(1, "xiaoming")
print(name_list)  # ['zhangsan', 'xiaoming', 'lisi', 'wangwu']

3.extend

# 3.3 extend 向列表末尾分散的追加另一个列表的所有内容,注意是分散的追加
hero_list = ["hanxin", "zhangfei", "zhuge"]
print(name_list)  # ['zhangsan', 'lisi', 'wangwu']
name_list.extend(hero_list)
print(name_list)  # ['zhangsan', 'lisi', 'wangwu', 'hanxin', 'zhangfei', 'zhuge']

列表删除数据(remove,pop,clear)

1.remove

name_list = ["zhangsan", "lisi", "wangwu"]
# 4.1 remove 删除列表中指定的数据,注意,输入的要删除的数据必须在列表内,否则会报错
# 如果列表中存在两个相同的元素时,remove方法会删除第一个出现的元素
print(name_list)  # ['zhangsan', 'lisi', 'wangwu']
name_list.remove("zhangsan")
print(name_list)  # ['lisi', 'wangwu']

2.pop

name_list = ["zhangsan", "lisi", "wangwu"]
# 4.2 pop 默认删除列表最后一个数据,也可以删除指定索引的数据,指定索引时,不能超过范围,否则报错
print(name_list)  # ['zhangsan', 'lisi', 'wangwu']
name_list.pop()
print(name_list)  # ['zhangsan', 'lisi']

name_list.pop(2)
print(name_list)  # ['lisi']

3.clear

name_list = ["zhangsan", "lisi", "wangwu"]
# 4.3 clear 清空列表
print(name_list)  # ['zhangsan', 'lisi', 'wangwu']
name_list.clear()
print(name_list)  # []

del关键字删除列表元素和del注意事项

name_list = ["zhangsan", "lisi", "wangwu"]
# 使用del关键字可以删除列表中的元素;但在日常开发中,如果要删除列表中的元素,建议使用列表提供方法。
del name_list[1]
print(name_list)  # ['zhangsan', 'wangwu']

# del关键字的本质是将变量从内存中删除
name = "xiaoming"
print(name)
del name
# print(name)  # del将变量删除后,变量就无效了,不能再被调动,否则报错,所以本行必须被删除

列表统计(len,count)

1.len

name_list = ["zhangsan", "lisi", "wangwu"]

# len 统计列表中元素的个数
list_num1 = len(name_list)
print("列表中元素的个数为:", list_num1)
name_list.append("zhangsan")
list_num2 = len(name_list)
print("列表中元素的个数为:", list_num2)

2.count

name_list = ["zhangsan", "lisi", "wangwu"]
# count 统计列表中某一元素出现的个数
times = name_list.count("zhangsan")
print("列表中zhangsan出现的次数为:", times)

列表的升降序和逆序(反转) (sort,reverse)

升序sort

name_list = ["zhangsan", "lisi", "wangwu"]
num_list = [2, 4, 1, 3, 8]

name_list.sort()
print("升序后姓名列表:", name_list)  # ['lisi', 'wangwu', 'zhangsan']
print("升序前数字列表:", num_list)  # [2, 4, 1, 3, 8]
num_list.sort()
print("升序后数字列表:", num_list)  # [1, 2, 3, 4, 8]

降序sort

name_list = ["zhangsan", "lisi", "wangwu"]
num_list = [2, 4, 1, 3, 8]

print("降序前姓名列表:", name_list)  # ['zhangsan', 'lisi', 'wangwu']
name_list.sort(reverse=True)
print("降序后姓名列表:", name_list)  # ['zhangsan', 'wangwu', 'lisi']
print("降序前数字列表:", num_list)  # [2, 4, 1, 3, 8]
num_list.sort(reverse=True)
print("降序后数字列表:", num_list)  # [8, 4, 3, 2, 1]

逆序reverse

name_list = ["zhangsan", "lisi", "wangwu"]
num_list = [2, 4, 1, 3, 8]

print("逆序前姓名列表:", name_list)  # ['zhangsan', 'lisi', 'wangwu']
name_list.reverse()
print("逆序后姓名列表:", name_list)  # ['wangwu', 'lisi', 'zhangsan']
print("逆序前数字列表:", num_list)  # [2, 4, 1, 3, 8]
num_list.reverse()
print("逆序后数字列表:", num_list)  # [8, 3, 1, 4, 2]

应注意,无论是升降序还是逆序,都是直接对原列表做修改的,而不是临时修改

列表其他扩展

关键字,函数和方法的区别

关键字

关键字是Python内置的,具有特殊意义的标识符;
关键字比如del,直接使用,后面无需括号。

import keyword

print(keyword.kwlist)

"""
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue','def', 'del',
 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 
 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
 """

函数

函数封装了独立功能,可以直接调用;
函数的调用:

# 函数名(参数)
例如:print("hello world")

方法

方法和函数类似,封装了独立功能;
与函数不同的是,方法需要通过对象调用,表示针对这个对象要做的操作。
方法的使用:

# 对象.方法名()
例如:namelist.pop()

循环遍历

列表遍历就是 从头到尾 依次从列表中取数据;
每次循环都将 从列表中顺序的读取出来的数据放在临时变量中,然后执行相同的操作。
使用for进行迭代遍历。

遍历语法格式:

for 临时变量 in 列表:
    针对临时变量进行的操作

遍历示例:

name_list = ["zhangsan", "lisi", "wangwu"]
for i in name_list:
    print("本次读取的名字为:", i)

列表的应用场景

虽然python的列表可以存储不同的数据类型,比如同时存储字符串和数字;但在实际开发中,通常都是存储的同一类数据类型,然后通过迭代遍历列表中的数据,做相同的操作。

转载于:https://www.cnblogs.com/yifchan/p/python-1-5.html

相关文章:

  • MyBatis配置多数据源
  • Asp.net core Identity + identity server + angular 学习笔记 (第三篇)
  • 【题解】四色定理
  • Android 实现动态背景“五彩蛛网”特效,让你大开眼界!
  • python高并发?
  • 雷林鹏分享:二级目录配置CI应用
  • Sym System Recovery 2013 ( 備份 操作 )
  • iOS-在项目中引入RSA算法
  • 简单的数学题
  • 关于JS引擎优化的理解
  • 如何优雅的备份账号相关信息
  • mybatis学习总结
  • 全球首个大规模光电芯片到来
  • 1.4T的mysql表删除
  • MYSQL-SELECT查
  • 【Amaple教程】5. 插件
  • 【css3】浏览器内核及其兼容性
  • 【知识碎片】第三方登录弹窗效果
  • android图片蒙层
  • C++回声服务器_9-epoll边缘触发模式版本服务器
  • CODING 缺陷管理功能正式开始公测
  • Git 使用集
  • java2019面试题北京
  • Object.assign方法不能实现深复制
  • orm2 中文文档 3.1 模型属性
  • React-Native - 收藏集 - 掘金
  • spring boot下thymeleaf全局静态变量配置
  • 初探 Vue 生命周期和钩子函数
  • 关于使用markdown的方法(引自CSDN教程)
  • 听说你叫Java(二)–Servlet请求
  • 线上 python http server profile 实践
  • 线性表及其算法(java实现)
  • HanLP分词命名实体提取详解
  • linux 淘宝开源监控工具tsar
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • 测评:对于写作的人来说,Markdown是你最好的朋友 ...
  • #NOIP 2014# day.1 生活大爆炸版 石头剪刀布
  • #在线报价接单​再坚持一下 明天是真的周六.出现货 实单来谈
  • $forceUpdate()函数
  • (33)STM32——485实验笔记
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (九)c52学习之旅-定时器
  • (九)信息融合方式简介
  • (篇九)MySQL常用内置函数
  • (转)http协议
  • (转)ORM
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • .h头文件 .lib动态链接库文件 .dll 动态链接库
  • .net refrector
  • .NET 常见的偏门问题
  • .Net 路由处理厉害了
  • .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)
  • .NET/C# 中你可以在代码中写多个 Main 函数,然后按需要随时切换