列表

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

定义列表(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. iOS - Action Extension

    上一篇<iOS开发 之 Share Extension>介绍了分享扩展的开发与使用,本篇主要还是讲述在系统分享菜单中最底下一栏的功能扩展:Action Extension,该扩展跟Shar ...

  2. iOS - 转场动画

    苹果在 iOS7 定制了 ViewController 的切换效果 一 在iOS5和iOS6之前,ViewController的切换主要有4种 Push/Pop,NavigationViewCotnr ...

  3. Android之数据存储

    概述 1.android中包含5中数据存储方式: SharedPreferences存储数据. ContentProvider存储 文件存储 SQLlite数据库存储 网络存储 Preference  ...

  4. Android Studio项目提交(或更新)到github的方法

    一 配置github登陆信息 二 上传工程到github 1. 2. 点击Share按钮 3. 点击ok按钮 状态栏提示: 4. 点击 No 按钮 5.AS右下脚弹出提示框 查看github网站,已经 ...

  5. 在ubuntu中安装rpm包

    Ubuntu的软件包格式是deb,如果要安装rpm的包,则要先用alien把rpm转换成deb. sudo apt-get install alien #alien默认没有安装,所以首先要安装它 su ...

  6. 【NOI2015】荷马史诗[Huffman树+贪心]

    #130. [NOI2015]荷马史诗 统计 描述 提交 自定义测试 追逐影子的人,自己就是影子. ——荷马 Allison 最近迷上了文学.她喜欢在一个慵懒的午后,细细地品上一杯卡布奇诺,静静地阅读 ...

  7. TypeScript中处理大数字(会丢失后面部分数字)

    为啥要弄这玩意? 最近做数值游戏,需要用到很大的数字,在前端大数字会自动变成e的科学计数法. 有啥问题? 问题: 1. 在传递给服务端时,服务端因为不能处理大数字(怎么就处理不了?!),就想要我传字符 ...

  8. ssh免密码登录之ssh-keygen的用法

    A服务器:192.168.100.2 B服务器:192.168.100.3 要达到的目的:A服务器ssh登录B服务器不需要输入密码 1.在A服务器下使用ssh-keygen命令生成公钥/私钥密钥对,执 ...

  9. Unity3D笔记 GUI 一

    要实现的功能: 1.个性化Windows界面 2.减少个性化的背景图片尺寸 3.个性化样式ExitButton和TabButton 4.实现三个选项卡窗口 一.个性化Windows界面 1.1.创建一 ...

  10. Bitbucket - 用git 用法

    核心流程: 从远端中心repo那里Git clone 到本地,再在本地开发(add, commit), 通常会利用branch管理,如果觉得code 没问题了,就push到远端的中心repo上.这里中 ...