本文主要介绍下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. 数据中台解析Hive SQL过程

    一.数据中台解析SQL的目的: 数据中台需要对外提供数据特征查询的能力,因此中台查找并解析各个平台的sql,找出哪些表中的字段经常被使用,以便沉淀为特征,而我们要做的是找出sql中的数据表及其字段.以 ...

  2. SQL语句中使用Group by

    参考经典文章:https://blog.csdn.net/liu_shi_jun/article/details/51329472 1.group by 分组 ,每一组数据只有一行,如果group b ...

  3. 在.net core中一个简单的加密算法

    using System; using System.Text; //System.Security下加密算法的命名空间 using System.Security.Cryptography; nam ...

  4. ADO.net Connection对象简介

    Connection对象 学习的是刘皓的文章  ADO.NET入门教程(四) 品味Connection对象 这篇文章开始水平一般起来了,主要介绍了要优雅的使用这个对象 1 用try...catch.. ...

  5. JDBC学习笔记——事务、存储过程以及批量处理

    1.事务                                                                                   1.1.事务的基本概念和使 ...

  6. WPF中的 Layout To Layout

    原文:WPF中的 Layout To Layout   WPF中的 Layout To Layout                             周银辉 WPF的布局功能异常强大,当有时我 ...

  7. POJ读书笔记2.1 —— 鸡兔笼带

    http://blog.csdn.net/pipisorry/article/details/36433305 问题描写叙述  一个笼子里面关了鸡和兔子(鸡有2仅仅脚.兔子有4仅仅脚.没有例外). 已 ...

  8. 通通玩blend美工(8)——动态绘制路径动画,画出个萌妹子~

    原文:通通玩blend美工(8)--动态绘制路径动画,画出个萌妹子~ 2年前我在玩Flex的时候就一直有一个疑问,就是如何来实现一个蚊香慢慢烧完的Loading动画呢? 刚经历了某甲方高强度一个月的洗 ...

  9. 小记Linux下对mac80211内核模块修改

    mac80211内核模块实现了对802.11协议的处理过程.其中mlme.c文件中的内容实现了对Deauth管理帧的处理.考虑到Deauth攻击至今仍没有好的防御方法(据说有802.11w,可是我一直 ...

  10. Windows10 1607 x64/x86 + Office 2016 Win/Mac + KMS激活/安装密钥汇总

    各位观众,这里汇总了一份最新微软系统和办公软件的资源清单,希望对你们有帮助. Windows10 1607 For x64 ed2k://|file|cn_windows_10_multiple_ed ...