python List,它不是一个简单的数组
第一次,学python
的时候,我看到列表这个词语,并不知道这是什么东西。听名字,感觉很高大上。当学习列表完,原来只不过就是一个数组(数组的升级版)。
List
是python
里面最基本的数据结构。序列中每个元素都是从索引(下标)从0
开始,依次叠加。
List
操作的方法很多,只能熟悉基本常用的这个方法。
第二个数据结构是元祖,元组其实跟列表差不多,也是存一组数,只不是它一旦创建,便不能再修改,所以又叫只读列表。
元祖的方法只有count
和index
。
0.创建
# list 有两种创建方式
# 第一种
list1 = ["1", "2"]
# 第一种方式等同于第二钟方式,其实也是调用第二种方式创建列表
# 第二种
list(("1", "2"))
# 会自动加载构造函数__init__,内部执行for循环,把元祖转换为列表,相当于创建一个列表
1.切片(获取多个元素)
poets = ["libai", "dufu", "luyou", "wangwei", "sushi", "qinguan", "qinshaoyou", "liyu", "yanshu"]
poets[1:5] # 从下标1开始取,至第5个内(不包括5)1 <= x < 5
# ['dufu', 'luyou', 'wangwei', 'sushi']
poets[-1] # -1直接获取最后一个元素
# yanshu
poets[3:-1] # 如果想取最后一个元素,不能这样写,这样包含-1在内,应该是这样写 poets[3:]
# ['wangwei', 'sushi', 'qinguan', 'qinshaoyou', 'liyu']
poets[::2] # 最后一个参数 相当于步长,每隔元素就取一个
# ['libai', 'luyou', 'sushi', 'qinshaoyou', 'yanshu']
2.追加(在某尾添加一个元素)
poets.append("dumu")
# ['libai', 'dufu', 'luyou', 'wangwei', 'sushi', 'qinguan', 'qinshaoyou', 'liyu', 'yanshu', 'dumu']
# poets = poets.append("dumu") || print(poets.append("dumu")) 该方法没有返回值,如果这样操作得到结果为none
3.插入
sancao = ["caozhi", "coacao", "caopi"]
poets.insert(1, sancao)
# ['libai', ['caozhi', 'coacao', 'caopi'], 'dufu', 'luyou',
# 'wangwei', 'sushi', 'qinguan', 'qinshaoyou', 'liyu', 'yanshu', 'dumu']
# 这个方法需要两个参数,选择要插入的位置和要插入的元素 如果只用一个参数,会报错:insert() takes exactly 2 arguments (1 given)
# 第一个参数 只能是数字 不能是字符串 否则会报错: 'str' object cannot be interpreted as an integer
# 第二个参数 可以不填,要填字符串,数字都可以,或者列表等等。。。
4.更新
poets[1] = "dufu" # 更新好像没什么可以说的,就是这样,选择对应下标的元素覆盖,如果括号没有输入索引,会报错语法错误 invalid syntax
# poets[] = "ceishi"
# poets['1'] = "ceishi" # 当然索引只能是整形不能是字符串 list indices must be integers or slices, not str
5.移除
poets = ["libai", "dufu", "libai", "luyou"]
poets.remove("libai")
# ['dufu', 'libai', 'luyou']
# 选择要移除的元素,不是索引,如果有两个相同元素,只移除第一个匹配项
# 如果不输入元素,会报错 x not in list 或者放空 remove() takes exactly one argument (0 given)
poets.pop() # 默认删除最后一个元素
# ['dufu', 'libai']
poets = ["libai", "dufu", "luyou", "wangwei", "sushi", "qinguan", "qinshaoyou", "liyu", "yanshu"]
poets.pop(4)
# ['libai', 'dufu', 'luyou', 'wangwei', 'qinguan', 'qinshaoyou', 'liyu', 'yanshu']
sancao = ["caocao", "caozhi", "caopi"]
poets.insert(1, sancao)
# ['libai', ['caocao', 'caozhi', 'caopi'], 'dufu', 'luyou', 'wangwei', 'qinguan', 'qinshaoyou', 'liyu', 'yanshu']
poets.pop(1) # pop可以删除嵌套中的列表
# ['libai', 'dufu', 'luyou', 'wangwei', 'qinguan', 'qinshaoyou', 'liyu', 'yanshu']
del poets[0:3] # 删除列表的元素,此方法可以一次性删除多个元素,跟切片道理一样
# ['wangwei', 'qinguan', 'qinshaoyou', 'liyu', 'yanshu']
6.扩展(在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表))
aList = ["liubei", "guanyu", "zhangfei"]
bList = ["zhaoyun", "machao", "huangzhong"]
aList.extend(bList)
# ['liubei', 'guanyu', 'zhangfei', 'zhaoyun', 'machao', 'huangzhong']
aList.extend("bList") # 如果是字符串,会把字符串分割依次放入列表中
# ['liubei', 'guanyu', 'zhangfei', 'b', 'L', 'i', 's', 't']
aList.extend(1) # int' object is not iterable
7.统计(统计某个元素在列表中出现的次数)
List1 = ["a", "v", "b", "a", "a", " ", "",1]
List1.count("") # 统计元素的个数
# 3
List1.count("") # 如果不填,应该是统计空格 注意" " 和 ""的区别
# 1
List1.count(1) # 也可以统计整形的个数
# 1
8.获取下标
List1 = ["a", "v", "b", "a", "a", " ", "", 1]
List1.index("a") # 如果有多个相同,至返回第一个元素的下标
# 0
List1.index("")
# 6
List1.index("c") # 如果没找到,如果没有找到对象则抛出异常
9.排序&翻转(对列表的元素进行反向排序)
List3 = ["lin", "huang", "li", 1, 3, 4]
# List3.sort() # python 版本问题 3.0版本 不支持 数字和字符串排序 unorderable types: int() < str()
# python 2.0版本支持 数字和字符串排序
List3[3] = '1'
List3[4] = '3'
List3[5] = '4'
List3.sort()
# ['1', '3', '4', 'huang', 'li', 'lin']
List3.reverse()
List3
# ['lin', 'li', 'huang', '4', '3', '1']
10.拷贝
List1 = ['a', 'b', 'c', 2, 3, 4, [8, 9, 4], 'h']
List2 = List1.copy() # 复制一份出来
List2[0] = 'A' # copy只能完整把列表第一层数据复制一份
List2[6][0] = 'k' # 深层里面列表不会完全复制一份,深层列表都指向同一个内存地址。如果深层的数据很大,整个复制不来很占内存
List1
List2
# ['a', 'b', 'c', 2, 3, 4, ['k', 9, 4], 'h']
# ['A', 'b', 'c', 2, 3, 4, ['k', 9, 4], 'h']
# 如果想实现深层列表完全复制一份,必须调用第三方库
# copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象。
# copy.deepcopy 深拷贝 拷贝对象及其子对象
import copy
# List3 = List1.deepcopy() # 深copy
11.判断一个列表是否为空
menghuan = ["jianxiage", "xiaoyaosheng", "gujingling", "shentianbing", "longtaizi"]
if len(menghuan):print("list have %s element" % len(menghuan))
else:print("list is empty")
# 由于一个空列表等于false,所以可以简化len(List)
menghuan = []
if menghuan:print("not empty")
else:print("empty")list1 = ["a", "b", "c", "d", 2, 3, 4, 2, 4, "ds", 23, 23, 12, "qw", "23"]
# 元素是否存在于列表中
if 2 in list1:num_of_ele = list1.count(2)position_of_ele = list1.index(2)print(" [%s] is in list1, position[%s]" % (num_of_ele, position_of_ele))
12.迭代器
# 遍历列表同时获取索引
i = 0
for element in list1:print(element)i += 1
# 既要遍历索引又要遍历元素时 这样写更简洁些
for i, element in enumerate(list1): # enumerate是python的内置函数,在字典上是枚举、列举的意思print(i)print(element)
python List,它不是一个简单的数组相关推荐
- python简单代码演示效果-演示python如何创建和使用一个简单的元类的代码
在做工程闲暇时间,将做工程过程比较重要的一些内容备份一下,如下内容段是关于演示python如何创建和使用一个简单的元类的内容,应该能对小伙伴们也有用途. #!/usr/bin/env python # ...
- 使用 Python 的 flask 架构搭建一个简单web网站
使用 Python 的 flask 架构搭建一个简单web网站 1.flask最简单框架,返回hello world: from flask import * app = Flask(__name__ ...
- 【meng_项目】python+flask+html+css制作一个简单的生日祝福语网页
python+flask+html+css制作一个简单的生日祝福语网页 一个py文件: test.py 一个html文件: birthday_index.html 一张图片: ...
- 如何搭建python框架_从零开始:写一个简单的Python框架
原标题:从零开始:写一个简单的Python框架 Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 你为什么想搭建一个Web框架?我想有下面几个原因: 有一个 ...
- 用python设计学生管理系统_基于python和tkinter实现的一个简单的学生信息管理系统...
一个简单的学生信息管理系统基于python和tkinter 1.需求分析1.大学生信息管理系统使用tkinter接口创建一个窗口.使界面更漂亮.2. 实现与数据库的连接,教师和学生的信息可以保存或读取 ...
- python实现支持向量机实例_一个简单的案例带你了解支持向量机算法(Python代码)...
介绍 掌握机器学习算法并不是一个不可能完成的事情.大多数的初学者都是从学习回归开始的.是因为回归易于学习和使用,但这能够解决我们全部的问题吗?当然不行!因为,你要学习的机器学习算法不仅仅只有回归! 把 ...
- 掷骰子python代码_通过构建一个简单的掷骰子游戏去学习怎么用 Python 编程
不论是经验丰富的老程序员,还是没有经验的新手,Python 都是一个非常好的编程语言. Image by : opensource.com Python 是一个非常流行的编程语言,它可以用于创建桌面应 ...
- python爬微博关键字_一个简单的python爬虫实践,爬取包含关键词的新浪微博
此项目主要功能是通过微博"搜索"页面,每天自动爬取所有包含自定list中词汇的微博原数据.低速可控,简单粗暴,适合用来有针对性的搜集数据量不是很大的包含关键词的微博,每日可爬3-6 ...
- python qq机器人框架有哪些_使用Python的Tornado框架实现一个简单的WebQQ机器人
我打算将WebQQ单独出来运行, 一开始直接拷贝了pyxmpp2的mainloop, 但是跑起来问题多多, 所以我又研究了利用Tornado进行网络编程(这里), 所以我放弃了Pyxmpp2的main ...
- python入侵数据库数据库_一个简单的Python访问Mysql数据库例子
2020/11/3操作记录 搭建好Python的数据环境之后,接下来就是在Python代码中访问数据库我先在Navicat图形化界面创建一个数据库命名为pythontest,再在数据库中创建了一个表s ...
最新文章
- linux下磁盘分区
- 二叉树代码 java面试题_《剑指offer》面试题39 二叉树的深度(java)
- C++ 中的集合与字典
- Redis和Memcached整体
- 【实战 Ids4】║ 给授权服务器加个锁——HTTPS配置
- typescript 安装
- C#将Access数据库导出为JSON
- Access在Win10连接失败的问题
- 自用的项目管控周报模板
- java打印日历至Excel_如何利用Excel打印漂亮的工作日历
- 在java中调用mockjs生成模拟数据
- Processing编写熊猫
- 金融管理系统测试报告(内部测试案例)
- APS车间排产软件实现企业生产数据可视化
- ARM Uboot经历——Uboot初始化代码解析
- CAD中图框和比例和打印机的纸张尺寸的关系
- 基于Pytorch的MNIST手写数字识别实现(含代码+讲解)
- 企业微信裂变获客,粉丝增长的优势在哪?
- 【Python】python数据库编程
- mac怎么做一段卡点音乐