本文主要介绍下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. 如何更好的利用redis

    原文地址http://oldblog.antirez.com/post/take-advantage-of-redis-adding-it-to-your-stack.html @(syoka)[re ...

  2. 微信公众平台消息接口开发(31)微信浏览器HTTP_USER_AGENT判断

    微信公众平台开发 微信公众平台开发者 微信公众平台开发模式 微信浏览器 HTTP_USER_AGENT作者:方倍工作室 原文:http://www.cnblogs.com/txw1958/archiv ...

  3. UVA - 10312 Expression Bracketing

    Description Problem A Expression Bracketing Input: standard input Output: standard output Time Limit ...

  4. mysql常见操作汇总 专题

    mysql中in多个字段 1. 基本用法 SELECT * FROM USER WHERE , , ); 2. 多个字段同时使用 SELECT * FROM USER WHERE (, ),(, ), ...

  5. WPF 4 DataGrid 控件(基本功能篇)

    原文:WPF 4 DataGrid 控件(基本功能篇)      提到DataGrid 不管是网页还是应用程序开发都会频繁使用.通过它我们可以灵活的在行与列间显示各种数据.本篇将详细介绍WPF 4 中 ...

  6. Linux技术学习路线图

  7. 第0001题 : 产生随机数(顺便读random模块官方文档)

    看这个之前我准备先看一下random模块的官方文档... 在整个随机模块中,  最基础的就是random, 它产生一个 [0.0, 1.0)的浮点数. 这个模块下所有的函数实际上是绑定在一个叫做ran ...

  8. jquery QQ微博

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. C# HttpWebResponse下载限速

    在使用HttpWebResponse请求网络内容的时候,一般如下面这种方法: code 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 // 非生产环境代码,请在实际使用时进行 ...

  10. 数据绑定(四)使用DataContext作为Binding的Source

    原文:数据绑定(四)使用DataContext作为Binding的Source DataContext属性被定义在FrameworkElement类里,这个类是WPF控件的基类,这意味着所有WPF控件 ...