本文主要介绍下python列表的的一些基本操作

列表是我们在python编程中常用的数据类型之一,通过列表我们可以对数据实现最方便的存储、修改等操作。

定义列表

names=['ZhangSan','LiSi','WangWu']

列表的访问:通过下表来访问列表中的元素,下标从0开始计数,还可以反着取,-1表示最后一个元素

 >>> names[0]
'ZhangSan'
>>> names[2]
'WangWu'
>>> names[-1]
'WangWu'
>>> names[-2]
'LiSi'
>>>

切片操作

 >>> names=['ZhangSan','LiSi','WangWu','ZhaoLiu','Tom','Amy']
>>> names[1:4] #取下标1到4之间的数据元素,包括1,不包括4
['LiSi', 'WangWu', 'ZhaoLiu']
>>> names[1:-1] #取小标1到-1的值,不包括-1
['LiSi', 'WangWu', 'ZhaoLiu', 'Tom']
>>> names[0:3]
['ZhangSan', 'LiSi', 'WangWu']
>>> names[:3] #如果是从头开始取,0可以忽略,跟上句结果一样
['ZhangSan', 'LiSi', 'WangWu']
>>> names[3:] #如果想取最后一位,必须不能写-1
['ZhaoLiu', 'Tom', 'Amy']
>>> names[3:-1] #不包含-1
['ZhaoLiu', 'Tom']
>>> names[0::2] #2代表步长,每隔一个元素就取一个
['ZhangSan', 'WangWu', 'Tom']
>>> names[::2] #和上句效果一样
['ZhangSan', 'WangWu', 'Tom']
>>>

追加操作:在列表最后追加元素列表

 >>> names=['ZhangSan','LiSi','WangWu']
>>> names.append("我是新人")
>>> names
['ZhangSan', 'LiSi', 'WangWu', '我是新人']
>>>

插入操作

 >>> names=['ZhangSan','LiSi','WangWu','Tony']
>>> names.insert(2,"Tom") #在WangWu前面插入Tom
>>> names
['ZhangSan', 'LiSi', 'Tom', 'WangWu', 'Tony']
>>> names.insert(4,"LuXi") #在WangWu后面插入LuXi
>>> names
['ZhangSan', 'LiSi', 'Tom', 'WangWu', 'LuXi', 'Tony']
>>>

修改操作

 >>> names=['ZhangSan','LiSi','WangWu','Tony']
>>> names[2]="John" ##将WangWu改成"John"
>>> names
['ZhangSan', 'LiSi', 'John', 'Tony']
>>>

删除操作

 >>> names=['ZhangSan','LiSi','WangWu','ZhaoLiu','Tony','Tom','LiLei']
>>> del names[2] #删除下标为2的元素,即WangWu
>>> names
['ZhangSan', 'LiSi', 'ZhaoLiu', 'Tony', 'Tom', 'LiLei']
>>> del names[4] #删除下标为4的元素,即Tom
>>> names
['ZhangSan', 'LiSi', 'ZhaoLiu', 'Tony', 'LiLei']
>>> names.remove("Tony") #删除指定的元素Tony
>>> names
['ZhangSan', 'LiSi', 'ZhaoLiu', 'LiLei']
>>> names.pop() #删除最后一个元素
'LiLei'
>>> names
['ZhangSan', 'LiSi', 'ZhaoLiu']
>>>

扩展操作

 >>> names=['ZhangSan', 'LiSi', 'ZhaoLiu']
>>> b=[1,2,3]
>>> names.extend(b)
>>> names
['ZhangSan', 'LiSi', 'ZhaoLiu', 1, 2, 3]
>>>

统计列表中相同元素的个数

 >>> names=['ZhangSan', 'LiSi', 'ZhaoLiu','LiSi',1, 2, 3]
>>> names.count("LiSi")
2
>>>

排序和翻转:优先级   特殊符号>数字>大写>小写

 >>> names=['ZhangSan', 'LiSi', 'ZhaoLiu','LiSi',1, 2, 3]
>>> names.sort()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unorderable types: int() < str() #在python3里面不同数据类型不能在一起排序
>>>
>>> names[-1]=''
>>> names[-2]=''
>>> names[-3]=''
>>> names
['LiSi', 'LiSi', 'ZhangSan', 'ZhaoLiu', '', '', '']
>>> names.sort() #将列表排序
>>> names
['', '', '', 'LiSi', 'LiSi', 'ZhangSan', 'ZhaoLiu']
>>> names.reverse() #将列表反转
>>> names
['ZhaoLiu', 'ZhangSan', 'LiSi', 'LiSi', '', '', '']
>>>

获取下标

 >>> names=['ZhaoLiu', 'ZhangSan', 'LiSi', 'LiSi', '', '', '']
>>> names.index('LiSi') #如果列表中有多个相同元素,只返回找到的第一个的下标
2
>>> names.index('')
4
>>>

浅拷贝copy():

浅复制并不会产生一个独立的对象单独存在,他只是将原有的数据块打上一个新标签,所以当其中一个标签被改变的时候,数据块就会发生变化,另一个标签也会随之改变。
 >>> names=['ZhaoLiu', 'ZhangSan',['lilei','luxi'], 'LiSi','', '', '']
>>> name_copy=names.copy() #只是浅复制
>>> names
['ZhaoLiu', 'ZhangSan', ['lilei', 'luxi'], 'LiSi', '', '', '']
>>> name_copy
['ZhaoLiu', 'ZhangSan', ['lilei', 'luxi'], 'LiSi', '', '', '']
>>> names[1]="张三" #只改变names里面的值,name_copy里面的不变
>>> names
['ZhaoLiu', '张三', ['lilei', 'luxi'], 'LiSi', '', '', '']
>>> name_copy
['ZhaoLiu', 'ZhangSan', ['lilei', 'luxi'], 'LiSi', '', '', '']
>>> names[2][0]="LILEI" #names和name_copy里面的值都改变
>>> names
['ZhaoLiu', '张三', ['LILEI', 'luxi'], 'LiSi', '', '', '']
>>> name_copy
['ZhaoLiu', 'ZhangSan', ['LILEI', 'luxi'], 'LiSi', '', '', '']
>>> name_copy[2][1]='露西'
>>> names
['ZhaoLiu', '张三', ['LILEI', '露西'], 'LiSi', '', '', '']
>>> name_copy
['ZhaoLiu', 'ZhangSan', ['LILEI', '露西'], 'LiSi', '', '', '']

深复制deepcopy():

我们寻常意义的复制就是深复制,即将被复制对象完全再复制一遍作为独立的新个体单独存在。所以改变原有被复制对象不会对已经复制出来的新对象产生影响。
 #Author:Zhang XuLin
import copy
names=['ZhaoLiu', 'ZhangSan',['lilei','luxi'], 'LiSi','', '', '']
name_copy=copy.deepcopy(names)
print(names)
print(name_copy)
print("========================")
#['ZhaoLiu', 'ZhangSan', ['lilei', 'luxi'], 'LiSi', '3', '2', '1']
#['ZhaoLiu', 'ZhangSan', ['lilei', 'luxi'], 'LiSi', '3', '2', '1']
#========================
names[1]="张三"
print(names)
print(name_copy)
print("========================")
#['ZhaoLiu', '张三', ['lilei', 'luxi'], 'LiSi', '3', '2', '1']
#['ZhaoLiu', 'ZhangSan', ['lilei', 'luxi'], 'LiSi', '3', '2', '1']
#======================== names[2][0]="LILEI"
print(names)
print(name_copy)
print("************************************")
#['ZhaoLiu', '张三', ['LILEI', 'luxi'], 'LiSi', '3', '2', '1']
#['ZhaoLiu', 'ZhangSan', ['lilei', 'luxi'], 'LiSi', '3', '2', '1']
#************************************ name_copy[2][1]='露西'
print(names)
print(name_copy) #['ZhaoLiu', '张三', ['LILEI', 'luxi'], 'LiSi', '3', '2', '1']
#['ZhaoLiu', 'ZhangSan', ['lilei', '露西'], 'LiSi', '3', '2', '1']

清空和删除列表

 >>> names=['ZhaoLiu', 'ZhangSan',['lilei','luxi'], 'LiSi','', '', '']
>>> names.clear() #将列表清空
>>> names
[]
>>> del names #将列表删除
>>> names
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'names' is not defined
>>>

python学习之路--python基础之列表操作的更多相关文章

  1. python学习之路-day2-pyth基础2

    一.        模块初识 Python的强大之处在于他有非常丰富和强大的标准库和第三方库,第三方库存放位置:site-packages sys模块简介 导入模块 import sys 3 sys模 ...

  2. Python学习之路-Day2-Python基础2

    Python学习之路第二天 学习内容: 1.模块初识 2.pyc是什么 3.python数据类型 4.数据运算 5.bytes/str之别 6.列表 7.元组 8.字典 9.字符串常用操作 1.模块初 ...

  3. Python学习之路-Day2-Python基础3

    Python学习之路第三天 学习内容: 1.文件操作 2.字符转编码操作 3.函数介绍 4.递归 5.函数式编程 1.文件操作 打印到屏幕 最简单的输出方法是用print语句,你可以给它传递零个或多个 ...

  4. Python学习之路-Day1-Python基础

    学习python的过程: 在茫茫的编程语言中我选择了python,因为感觉python很强大,能用到很多领域.我自己也学过一些编程语言,比如:C,java,php,html,css等.但是我感觉自己都 ...

  5. PYTHON学习之路_PYTHON基础(6)

    学习内容: Python模块介绍 1.time &datetime模块 2.random 3.shutil 4.shelve 5.xml处理 6.configparser 7.hashlib ...

  6. PYTHON学习之路_PYTHON基础(3)

    学习内容: 1.Python字典 2.Python集合 3.Python字符编码 4.Python文件操作 5.Python实例 一.Python字典 1.定义: dic1={'name':'alex ...

  7. PYTHON学习之路_PYTHON基础(2)

    学习内容: 1.Python数据类型与变量 2.Python字符串 3.Python列表 4.Python while循环 5.Python字典 6.Python实例 一.Python数据类型与变量 ...

  8. PYTHON学习之路_PYTHON基础(1)

    学习内容: 1.Python介绍 2.Python程序初接触和变量 3.Python用户交互 4.Python数据类型 5.Python循环if...(elif)...else 6.Python循环w ...

  9. Python学习之路1 - 基础入门

    本文内容 Python介绍 安装Python解释器 输出 变量 输入 条件判断语句 循环语句 模块讲解 三元运算 字符串和二进制的相互转化 本系列文章使用的Python版本为3.6.2 使用开发工具为 ...

  10. PYTHON学习之路_PYTHON基础(10)

    学习内容: Python进程与线程 1.线程及线程类 2.线程守护 3.线程等待 4.线程锁 5.信号量 6.timer用法 7.队列 8.事件驱动 9.生产者消费者模型 10.进程及进程同步 11. ...

随机推荐

  1. DDD实战11 在项目中使用JWT的token 进行授权验证

    步骤: 1.首先要在webapi的管道中 使用认证(Authentication) 2.要在webapi的服务中注册验证条件 代码如下: namespace Dealer.WebApi { publi ...

  2. ATS项目更新(4) 更新DLL到远程服务器

    rem by jin tao rem upload dll to ta1bbn01 rem rem @echo off echo %time% set time1 = %,%%,%%,% rem ** ...

  3. 大班模型行为PK(总结)

    行为类模式包括责任链模式.命令模式.解释器模式.迭代模式.中介模式.备忘录模式.观察者模式.State模式.策略模式.模板方法.Visitor模式,我去,许多.. .主要有以下挑几个easy混乱和控制 ...

  4. opengl编程指南 第七版 源代码bug Page35 lines.c 红宝书

    问题1:根据源代码时,我发现的时候去敲门.不正确实施效果.哪里是不正确?没有源代码glPushAttrib(GL_LINE_STIPPLE) glPopAttrib().所以会出现最后的下一次抽奖提供 ...

  5. rc-form(翻译)

    原地址:https://npm.taobao.org/package/rc-form rc-form React 高阶表单控制组件.       开发 npm install npm start op ...

  6. wpf 触摸屏 button 背景为null的 问题

    原文:wpf 触摸屏 button 背景为null的 问题 <!-- button样式--> <Style x:Key="myBtn" TargetType=&q ...

  7. python socket 客服端服务端编程

    客服端编程 import socket try: s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) except socket.error a ...

  8. Android 联系人导入导出(VCard格式)

    之前在Android Contact 导入导出 vcf格式(不依赖第三方库)记录了一下依赖Android sdk中的功能导入导出联系人(第一次做java项目内容,有些地方的记录是否正确,暂时我也不知道 ...

  9. C#高性能大容量SOCKET并发(十):SocketAsyncEventArgs线程模型

    原文:C#高性能大容量SOCKET并发(十):SocketAsyncEventArgs线程模型 线程模型 SocketAsyncEventArgs编程模式不支持设置同时工作线程个数,使用的NET的IO ...

  10. 龙芯GO!龙芯平台上构建Go语言环境指南

    龙芯软件生态系列——龙芯GO!龙芯平台上构建Go语言环境指南2016-07-05 龙芯中科1初识Go语言Go语言是Google公司于2009年正式推出的一款开源的编程语言,是由Robert Gries ...