列表

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

定义列表(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. 自定义 Core Data 迁移

    本文转载至 http://objccn.io/issue-4-7/ 感谢本文作者 朱宏旭 的不啬分享 自定义 Core Data 迁移似乎是一个不太起眼的话题.苹果在这方面只提供了很少的文档,若是初次 ...

  2. pycharm2016.2.3注册码到期, 激活, 破解版

    python工具下载: https://pan.baidu.com/s/1kVEDOrl#list/path=%2F 密码:ko1i 注册码有效期是一年,到期后需再次激活 分享破解版 或者重新注册码激 ...

  3. PHP curl get post通用类

    <?php /** * @author:xiaojiang * curl 通用方法 ..get /post 传送数据 */ class process{ const GET = 0; const ...

  4. sklearn提供的自带的数据集

    sklearn 的数据集有好多个种 自带的小数据集(packaged dataset):sklearn.datasets.load_<name> 可在线下载的数据集(Downloaded ...

  5. DELPHI XE Android 开发笔记

    第一次编译时,设定android SDK: F:\RAD Studio XE6\PlatformSDKs\adt-bundle-windows-x86-20131030\sdk F:\RAD Stud ...

  6. sass - 公用方法封装

    // 设置宽高 @mixin wh($wid,$hei){ @if $wid { width: $wid; } @if $hei { height: $hei; } overflow: hidden; ...

  7. cmake openssl ios

    1 下载源代码 git clone https://github.com/pol51/OpenSSL-CMake.git cd OpenSSL-CMake mkdir build && ...

  8. MySQL DROP 大表时的注意事项

    对于表的删除,因为InnoDB引擎会在table cache层面维护一个全局独占锁一直到DROP TABLE完成为止,这样,对于表的其他操作会被HANG住.对于较大的表来说,DROP TABLE操作可 ...

  9. JVM工具jinfo实践

    一.jinfo命令格式 命令格式: jinfo [option] <pid> Usage: jinfo [option] <pid> (to connect to runnin ...

  10. Visual Studio 2013安装Update 3启动crash的解决方法

    Visual Studio 2013安装完Update 3后启动立刻crash,异常信息为: System.InvalidOperationException was unhandled Messag ...