第一次,学python的时候,我看到列表这个词语,并不知道这是什么东西。听名字,感觉很高大上。当学习列表完,原来只不过就是一个数组(数组的升级版)。

Listpython里面最基本的数据结构。序列中每个元素都是从索引(下标)从0开始,依次叠加。

List操作的方法很多,只能熟悉基本常用的这个方法。

第二个数据结构是元祖,元组其实跟列表差不多,也是存一组数,只不是它一旦创建,便不能再修改,所以又叫只读列表。

元祖的方法只有countindex

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,它不是一个简单的数组相关推荐

  1. python简单代码演示效果-演示python如何创建和使用一个简单的元类的代码

    在做工程闲暇时间,将做工程过程比较重要的一些内容备份一下,如下内容段是关于演示python如何创建和使用一个简单的元类的内容,应该能对小伙伴们也有用途. #!/usr/bin/env python # ...

  2. 使用 Python 的 flask 架构搭建一个简单web网站

    使用 Python 的 flask 架构搭建一个简单web网站 1.flask最简单框架,返回hello world: from flask import * app = Flask(__name__ ...

  3. 【meng_项目】python+flask+html+css制作一个简单的生日祝福语网页

    python+flask+html+css制作一个简单的生日祝福语网页 一个py文件:     test.py 一个html文件:   birthday_index.html 一张图片:       ...

  4. 如何搭建python框架_从零开始:写一个简单的Python框架

    原标题:从零开始:写一个简单的Python框架 Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 你为什么想搭建一个Web框架?我想有下面几个原因: 有一个 ...

  5. 用python设计学生管理系统_基于python和tkinter实现的一个简单的学生信息管理系统...

    一个简单的学生信息管理系统基于python和tkinter 1.需求分析1.大学生信息管理系统使用tkinter接口创建一个窗口.使界面更漂亮.2. 实现与数据库的连接,教师和学生的信息可以保存或读取 ...

  6. python实现支持向量机实例_一个简单的案例带你了解支持向量机算法(Python代码)...

    介绍 掌握机器学习算法并不是一个不可能完成的事情.大多数的初学者都是从学习回归开始的.是因为回归易于学习和使用,但这能够解决我们全部的问题吗?当然不行!因为,你要学习的机器学习算法不仅仅只有回归! 把 ...

  7. 掷骰子python代码_通过构建一个简单的掷骰子游戏去学习怎么用 Python 编程

    不论是经验丰富的老程序员,还是没有经验的新手,Python 都是一个非常好的编程语言. Image by : opensource.com Python 是一个非常流行的编程语言,它可以用于创建桌面应 ...

  8. python爬微博关键字_一个简单的python爬虫实践,爬取包含关键词的新浪微博

    此项目主要功能是通过微博"搜索"页面,每天自动爬取所有包含自定list中词汇的微博原数据.低速可控,简单粗暴,适合用来有针对性的搜集数据量不是很大的包含关键词的微博,每日可爬3-6 ...

  9. python qq机器人框架有哪些_使用Python的Tornado框架实现一个简单的WebQQ机器人

    我打算将WebQQ单独出来运行, 一开始直接拷贝了pyxmpp2的mainloop, 但是跑起来问题多多, 所以我又研究了利用Tornado进行网络编程(这里), 所以我放弃了Pyxmpp2的main ...

  10. python入侵数据库数据库_一个简单的Python访问Mysql数据库例子

    2020/11/3操作记录 搭建好Python的数据环境之后,接下来就是在Python代码中访问数据库我先在Navicat图形化界面创建一个数据库命名为pythontest,再在数据库中创建了一个表s ...

最新文章

  1. linux下磁盘分区
  2. 二叉树代码 java面试题_《剑指offer》面试题39 二叉树的深度(java)
  3. C++ 中的集合与字典
  4. Redis和Memcached整体
  5. 【实战 Ids4】║ 给授权服务器加个锁——HTTPS配置
  6. typescript 安装
  7. C#将Access数据库导出为JSON
  8. Access在Win10连接失败的问题
  9. 自用的项目管控周报模板
  10. java打印日历至Excel_如何利用Excel打印漂亮的工作日历
  11. 在java中调用mockjs生成模拟数据
  12. Processing编写熊猫
  13. 金融管理系统测试报告(内部测试案例)
  14. APS车间排产软件实现企业生产数据可视化
  15. ARM Uboot经历——Uboot初始化代码解析
  16. CAD中图框和比例和打印机的纸张尺寸的关系
  17. 基于Pytorch的MNIST手写数字识别实现(含代码+讲解)
  18. 企业微信裂变获客,粉丝增长的优势在哪?
  19. 【Python】python数据库编程
  20. mac怎么做一段卡点音乐

热门文章

  1. 三、Docker进阶
  2. python 基础 进程,线程,协程,并发并行,异步同步的定义
  3. Java高级容器——集合
  4. vs2010 setup 打包 安装 BAT批处理实现自动安装软件功能
  5. python系列教程14
  6. 周鸿祎《我的互联网方法论》
  7. 直播APP源码可拖拽悬浮球,仿Assistive Touch弹出窗口
  8. 用matplotlib获取雅虎股票数据并作图
  9. 如何判断当前打开的WORD或WPS文件已经关闭?
  10. 利用LD_PRELOAD给glibc库函数加钩子