列表

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

定义列表(list)

names=['Amy','Bob','Cindy','David']

通过下标访问列表中的元素,下标从0开始计数,还可以倒着取

>>> names[0]
'Amy'
>>> names[1]
'Bob'
>>> names[-1]
'David'
>>> names[-2]
'Cindy'

切片:取多个元素

>>> names=['Amy','Bob','Cindy','David','Eric','Frank']
>>> names[1:4] #取下标1至下标4之间的数字,包括1,不包括4
['Bob', 'Cindy', 'David']
>>> names[1:-1] #取下标1至-1(最后一个)的值,不包括-1
['Bob', 'Cindy', 'David', 'Eric']
>>> names[0:3]
['Amy', 'Bob', 'Cindy']
>>> names[:3] #如果是从头开始取,0可以忽略,跟上句效果一样
['Amy', 'Bob', 'Cindy']
>>> names[3:] #如果想取最后一个,必须不能写-1,只能这么写
['David', 'Eric', 'Frank']
>>> names[3:-1] #这样-1就不会被包含了
['David', 'Eric']
>>> names[0::2] #后面的2代表每隔一个元素就取一个
['Amy', 'Cindy', 'Eric']
>>> names[::2] #0可以忽略,和上句效果一样
['Amy', 'Cindy', 'Eric']

追加

>>> names
['Amy', 'Bob', 'Cindy', 'David', 'Eric', 'Frank']
>>> names.append("Serena") #追加元素会放在列表的最后一个
>>> names
['Amy', 'Bob', 'Cindy', 'David', 'Eric', 'Frank', 'Serena']

插入

>>> names
['Amy', 'Bob', 'Cindy', 'David', 'Eric', 'Frank', 'Serena']
>>> names.insert(2,'Olivia') #强行从Cindy前面插入
>>> names
['Amy', 'Bob', 'Olivia', 'Cindy', 'David', 'Eric', 'Frank', 'Serena']
>>> names.insert(5,'Anna')
>>> names
['Amy', 'Bob', 'Olivia', 'Cindy', 'David', 'Anna', 'Eric', 'Frank', 'Serena']

修改

>>> names
['Amy', 'Bob', 'Olivia', 'Cindy', 'David', 'Anna', 'Eric', 'Frank', 'Serena']
>>> names[2]='Tim' #将Olivia修改为Tim
>>> names
['Amy', 'Bob', 'Tim', 'Cindy', 'David', 'Anna', 'Eric', 'Frank', 'Serena']

删除

>>> names
['Amy', 'Bob', 'Tim', 'Cindy', 'David', 'Anna', 'Eric', 'Frank', 'Serena']
>>> del names[2]
>>> names
['Amy', 'Bob', 'Cindy', 'David', 'Anna', 'Eric', 'Frank', 'Serena']
>>> del names[4]
>>> names
['Amy', 'Bob', 'Cindy', 'David', 'Eric', 'Frank', 'Serena']
>>> names.remove("David") #删除指定元素
>>> names
['Amy', 'Bob', 'Cindy', 'Eric', 'Frank', 'Serena']
>>> names.pop() #删除列表最后一个值
'Serena'
>>> names
['Amy', 'Bob', 'Cindy', 'Eric', 'Frank']
>>> names.pop(1) #删除列表第二个值
'Bob'
>>> names
['Amy', 'Cindy', 'Eric', 'Frank']
>>> names.clear() #清空列表
>>> names
[]
>>> del names #删除列表
>>> names
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'names' is not defined

扩展

>>> names=['Amy','Bob','Cindy','David','Eric','Frank']
>>> b=[1,2,3]
>>> names.extend(b)
>>> names
['Amy', 'Bob', 'Cindy', 'David', 'Eric', 'Frank', 1, 2, 3]

拷贝

>>> import copy
>>> names=['Amy','Bob','Cindy',['David','Eric'],'Frank']
>>> names_copy_1=names.copy() #浅拷贝,只拷贝第一层,可以看做拷贝了第二层的内存地址
>>> names_copy_2=names #names_copy_2和names完全一致,names修改,names_copy_2也跟着修改
>>> names_copy_3=copy.copy(names) #浅拷贝,与names.copy()效果完全一致
>>> names_copy_4=names[:] #完全切片的形式创建浅拷贝,与names.copy()效果完全一致
>>> names_copy_5=list(names) #工厂函数的形式创建浅拷贝,与names.copy()效果完全一致
>>> names_copy_6=copy.deepcopy(names) #深拷贝,names_copy与names完全独立
>>> names
['Amy', 'Bob', 'Cindy', ['David', 'Eric'], 'Frank']
>>> names_copy_1
['Amy', 'Bob', 'Cindy', ['David', 'Eric'], 'Frank']
>>> names_copy_2
['Amy', 'Bob', 'Cindy', ['David', 'Eric'], 'Frank']
>>> names_copy_3
['Amy', 'Bob', 'Cindy', ['David', 'Eric'], 'Frank']
>>> names_copy_4
['Amy', 'Bob', 'Cindy', ['David', 'Eric'], 'Frank']
>>> names_copy_5
['Amy', 'Bob', 'Cindy', ['David', 'Eric'], 'Frank']
>>> names_copy_6
['Amy', 'Bob', 'Cindy', ['David', 'Eric'], 'Frank']
>>> names[2]="森碟"
>>> names[3][0]="DAVID"
>>> names
['Amy', 'Bob', '森碟', ['DAVID', 'Eric'], 'Frank']
>>> names_copy_1
['Amy', 'Bob', 'Cindy', ['DAVID', 'Eric'], 'Frank']
>>> names_copy_2
['Amy', 'Bob', '森碟', ['DAVID', 'Eric'], 'Frank']
>>> names_copy_3
['Amy', 'Bob', 'Cindy', ['DAVID', 'Eric'], 'Frank']
>>> names_copy_4
['Amy', 'Bob', 'Cindy', ['DAVID', 'Eric'], 'Frank']
>>> names_copy_5
['Amy', 'Bob', 'Cindy', ['DAVID', 'Eric'], 'Frank']
>>> names_copy_6
['Amy', 'Bob', 'Cindy', ['David', 'Eric'], 'Frank']
>>> person=['name',['money',100]]
>>> p1=person[:]
>>> p2=person[:]
>>> p1[0]='husband'
>>> p2[0]='wife'
>>> p1[1][1]=50
>>> p1
['husband', ['money', 50]]
>>> p2
['wife', ['money', 50]]
>>>

浅拷贝应用:比如创建联合账号,夫妻二人共同财产100元,丈夫花了50元,则丈夫妻子的共同财产均只剩下50元

统计

>>> names=['Amy', 'Bob', 'Cindy', 'David', 'Eric', 'Amy', 'Frank', 1, 2, 3]
>>> names.count("Amy")
2

排序&反转

>>> names
['Amy', 'Bob', 'Cindy', 'David', 'Eric', 'Amy', 'Frank', 1, 2, 3]
>>> names.sort() #排序
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: '<' not supported between instances of 'int' and 'str' #3.0里不同数据类型不能放在一起排序了
>>> names[-3]=''
>>> names[-2]=''
>>> names[-1]=''
>>> names.append('#')
>>> names.append('bob')
>>> names.append('amy')
>>> names
['', '', '', 'Amy', 'Amy', 'Bob', 'Cindy', 'David', 'Eric', 'Frank', '#', 'bob', 'amy']
>>> names.sort() #按照ASCII码顺序排序,一般顺序为:特殊字符、数字、大写字母、小写字母
>>> names
['#', '', '', '', 'Amy', 'Amy', 'Bob', 'Cindy', 'David', 'Eric', 'Frank', 'amy', 'bob']
>>> names.reverse() #反转
>>> names
['bob', 'amy', 'Frank', 'Eric', 'David', 'Cindy', 'Bob', 'Amy', 'Amy', '', '', '', '#']

获取下标

>>> names=['Amy', 'Bob', 'Cindy', 'David', 'Eric', 'Amy', 'Frank', 1, 2, 3]
>>> names.index("Amy") #只返回找到的第一个下标
0

列表循环

>>> names=['Amy','Bob','Cindy',['David','Eric'],'Frank']
>>> for i in names:
... print(i)
...
Amy
Bob
Cindy
['David', 'Eric']
Frank

 列表循环取出元素以及下标

>>> list=['a','b','c']
>>> for item in list:
... print(list.index(item),item) #方法1
...
0 a
1 b
2 c
>>> for i in enumerate(list):
... print(i) #方法2
...
(0, 'a')
(1, 'b')
(2, 'c')
>>> for index,item in enumerate(list):
... print(index,item) #方法3
...
0 a
1 b
2 c

 其他

>>> names=['Amy','Bob','Cindy','David']
>>> 'Amy' in names #判断一个值是否在列表中,列表、元组、字符串、字典、集合均如此操作
True
>>> Alex in names
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'Alex' is not defined

元组

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

定义元组(tuple)

names=('Amy','Bob','Cindy','David')

它只有2个方法,一个是count,一个是index。

>>> names=('Amy','Bob','Cindy','Amy','David')
>>> names.count('Amy') #统计
2
>>> names.index('Amy') #获取下标,只返回找到的第一个下标
0

Python3学习之路~2.1 列表、元组操作的更多相关文章

  1. Python3学习之路~4.1 列表生成式、生成器

    1 列表生成式 我现在有个需求,看列表[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],要求你把列表里的每个值加1,怎么实现?你可能会想到2种方式 a=[0,1,2,3,4,5,6,7,8 ...

  2. Python3学习之路~0 目录

    目录 Python3学习之路~2.1 列表.元组操作 Python3学习之路~2.2 简单的购物车程序 Python3学习之路~2.3 字符串操作 Python3学习之路~2.4 字典操作 Pytho ...

  3. Git学习之路(6)- 分支操作

    ▓▓▓▓▓▓ 大致介绍 几乎所有的版本控制系统都会支持分支操作,分支可以让你在不影响开发主线的情况下,随心所欲的实现你的想法,但是在大多数的版本控制系统中,这个过程的效率是非常低的.就比如我在没有学习 ...

  4. python3笔记十八:python列表元组字典集合文件操作

    一:学习内容 列表元组字典集合文件操作 二:列表元组字典集合文件操作 代码: import pickle  #数据持久性模块 #封装的方法def OptionData(data,path):    # ...

  5. python学习笔记-(四)列表&元组

    1.列表及元组操作 1.1 列表 Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素. 定义列表: >>> namelist = ...

  6. python基础数据类型之列表,元组操作

    一.列表的索引和切片1.列表的索引列表和字符串一样样拥有索引 lst = ["a","b","c"] print(lst[0]) # 获取第 ...

  7. Git学习之路(4)- 撤销操作、删除文件和恢复文件

    ▓▓▓▓▓▓ 大致介绍 经过前面的学习(小白学Git)已经建立了版本库,并上传了文件,这次来学习对这些文件进行基本的操作,即: ◆ 撤销操作 ◆ 删除文件 ◆ 恢复文件 我在此之前,已经将三个文件提交 ...

  8. Python3学习之路~9.4 队列、生产者消费者模型

    一 队列queue 当必须在多个线程之间安全地交换信息时,队列在线程编程中特别有用. 队列的作用:1.解耦,使程序直接实现松耦合 2.提高处理效率 列表与队列都是有顺序的,但是他们之间有一个很大的区别 ...

  9. Python3学习之路~8.6 开发一个支持多用户在线的FTP程序-代码实现

    作业: 开发一个支持多用户在线的FTP程序 要求: 用户加密认证 允许同时多用户登录 每个用户有自己的家目录 ,且只能访问自己的家目录 对用户进行磁盘配额,每个用户的可用空间不同 允许用户在ftp s ...

随机推荐

  1. 原生js(二)

    js的同步.异步和延迟 1.默认情况下,js是同步和阻塞DOM解析的.在解析DOM的过程中,当遇到script时,会暂停DOM解析,开始请求script并执行js,执行完成之后再接着解析DOM树. 2 ...

  2. eclipse中改变默认的workspace的方法

    1.File-->Switch Workspace-->Other 2.Window-->Preferences-->General-->Startup and Shui ...

  3. Free Download Manager (FDM) 中文版 - 替代迅雷最佳免费开源下载工具软件

    https://www.freedownloadmanager.org/ Free Download Manager (FDM) 是一款经典免费纯粹的下载软件,它开源无广告,界面简洁清爽,支持 BT. ...

  4. matlab中画系统零极点的方法

    写论文的时候由于需要画出系统的零极点图.但是之前不知道怎么用matlab画,今天研究了一下,拿出来和大家共享.所用到的matlab函数为zplane,matlab给出的解释如下: ZPLANE Z-p ...

  5. CentOS 6.4 php环境配置以及安装wordpress

    1. nginx php-rpm 包升级 sudo rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6- ...

  6. VIM 的一些技巧

    vim配置文件 ~/.vimrc 如果没有自己创建一个即可 filetype plugin indent on #打开插件 set number #显示行号 syntax on #语法高亮 set c ...

  7. Java虚拟机二 虚拟机的基本结构

    Java虚拟机的基本结构如图所示 类加载子系统负责从文件系统或网络中加载Class信息,加载的类信息存放于一块称为方法区的内存空间.除了类的信息外,方法区中可能还会存放运行是的常量池信息, 包括字符串 ...

  8. python之traceback

    traceback 模块允许你在程序里打印异常的跟踪返回 (Traceback)信息 1.1 traceback.print_exc() File: traceback-example-1.py # ...

  9. DevOps之零停机部署

    “零停机部署(ZDD)可在不中断现有服务的情况下部署新版系统.” 通过ZDD方式部署应用程序时,可在确保用户不会遭遇应用程序停机的前提下将新版应用引入生产环境.从用户和公司的角度来看,这应该是最佳部署 ...

  10. 使用Properties配置文件 InputStream与FileReader (java)

    java 开发中,常常通过流读取的方式获取 配置文件数据,我们习惯使用properties文件,使用此文件需要注意 文件位置:任意,建议src下 文件名称:任意,扩展名为properties 文件内容 ...