1.1.列表定义

列表是python中内置有序可变序列,列表的所有元素放在一对中括号“[]”中,并使用逗号分隔开;

一个列表中的数据类型可以各不相同,可以同时分别为整数、实数、字符串等基本类型,甚至是列表、字典以及其他自定义类型的对象。

例如:

[1, 2, 3, 2.4, 5]

[0.01, "zhangsan", [1,2,3]]

创建

使用“=”直接将一个列表赋值给变量即可创建列表对象。例如:a_list = [], b_list = [1, 2, 3]

使用list()函数将元组、range对象、字符串或其他类型的可迭代对象类型的数据转换为列表。

例如:a_list = list("Hello")将字符串"hello"转换成列表['H', 'e', 'l', 'l', 'o']

删除 当不再使用时,使用del命令删除整个列表 例如:

>>>x = [1, 2, 3]

>>>del x[1] #删除指定位置元素

>>>x

[1, 3]

>>>del x #删除整个列表

>>>x

Traceback (most recent call last):

File "", line 1, in

x

NameError: name 'x' is not defined

1.2.列表元素的增加

1.2.1.append()

向列表尾部追加一个元素,不改变其内存首地址,属于原地操作。例如:

x = [1, 2, 3]

x.append(4)

print(x)

输出:

[1, 2, 3, 4]

1.2.2.insert()

向列表任意位置插入一个元素,不改变其内存首地址,属于原地操作。

例如:

x = [1,3,4]

x.insert(1,2)

print(x)

输出:

[1, 2, 3, 4]

1.2.3.extend()

将另一个迭代对象的所有元素添加至该列表对象尾部,不改变其内存地址,属于原地操作。

例如:

x = [1,2]

x.extend([3,4])

print(x)

输出:

[1, 2, 3, 4]

1.3.运算符"+"和"*"

并不是真的为列表添加元素,而是创建一个新列表,不属于原地操作,而是返回新列表。

x = [1,2,3]

y = x + [4]

print(y)

y = x*2

print(y)

输出:

[1, 2, 3, 4]

[1, 2, 3, 1, 2, 3]

此时x保持不变,依旧是[1,2,3]

1.4.列表元素的删除

1.4.1.pop()

使用列表的pop()方法删除并返回指定(默认为最后一个)位置上的元素,如果给定的索引超出了列表的范围,则抛出异常。

x = [1,2,3,4]

print(x.pop())

print(x.pop(1))

输出:

4

2

1.4.2.remove()

删除首次出现的指定元素,如果列表中不错在要删除的元素,则抛出异常。

例如:

x = [1,2,3,4]

x.remove(2)

print(x)

输出:

[1, 3, 4]

1.4.3.del

删除列表中的指定位置上的元素。

例如:

x = [1,2,3,4]

del x[1]

print(x)

输出:

[1, 3, 4]

1.5.列表元素访问与计数

1.5.1.count()

统计指定元素在列表对象中出现的次数。

例如:

x = [1,2,3,3,4,5]

print(x.count(3))

print(x.count(0))

输出:

2

0

1.5.2.index()

获取指定元素首次出现的下标,若列表对象中不存在指定元素,则抛出异常。

例如:

x = [1,2,3,2,2,4]

print(x.index(2))

输出:

1

1.5.3.in

测试列表中是否存在某元素

例如:

x = [1,2,3,4]

print(3 in x)

print(5 in x)

输出:

True

False

1.6.列表排序

1.6.1.sort()

按照指定规则对所有元素进行排序,默认规则是直接比较规则大小。

例如:

aList = [3,4,5,6,7,9,11,13,15,17]

import random

random.shuffle(aList) #随机降序

print(aList)

aList.sort() #默认是升序排序

aList.sort(reverse = True) #降序排序

print(aList)

输出:

[15, 4, 13, 11, 5, 17, 9, 3, 7, 6]

[17, 15, 13, 11, 9, 7, 6, 5, 4, 3]

1.6.2.reverse()

将列表中所有元素原地逆序排列。

例如:

x = [6,4,2,4,1]

print(sorted(x))

print(sorted(x,reverse = True))

print(x)

输出:

[1, 2, 4, 4, 6]

[6, 4, 4, 2, 1]

[6, 4, 2, 4, 1]

1.6.4.reversed()

返回一个逆序排列后的迭代对象,不对原列表做任何修改。

例如:

x = [1,5,3,6,2]

print(list(reversed(x)))

print(x)

输出:

[2, 6, 3, 5, 1]

[1, 5, 3, 6, 2]

1.7.用语序列操作的常用内置函数

1.7.1.len()

返回列表中的元素个数,同样适用于元组、字典、集合、字符串等。

1.7.2.max()、min()

返回列表中的最大或最小元素,同样适用于元组、集合、range对象等。

1.7.3.sum()

对列表的元素进行求和运算。

1.7.4.zip()

返回可迭代的zip对象。

例如:

aList = [1, 2, 3]

bList = [4, 5, 6]

cList = zip(aList, bList)

print(cList)

print(list(cList))

输出:

[(1, 4), (2, 5), (3, 6)]

1.7.5.enumerate()

枚举列表元素,返回枚举对象,其中每个元素为包含下标和值的元组。该函数对元组、字符串同样有效。

例如:

for item in enumerate('abcdef'):

print(item)

输出:

(0, 'a')

(1, 'b')

(2, 'c')

(3, 'd')

(4, 'e')

(5, 'f')

1.8.遍历列表的三种方式

a = ['a','b','c','d','e','f']

for i in a:

print(i)

for i in range(len(a)):

print(i,a[i])

for i,ele in enumerate(a):

print(i,ele)

输出:

a

b

c

d

e

f

0 a

1 b

2 c

3 d

4 e

5 f

0 a

1 b

2 c

3 d

4 e

5 f

1.9.列表推导式

列表推导式使用非常简洁的方式来快速生成满足特定需求的列表,代码具有非常强的可读性。

语法形式:[表达式 for 变量 in 序列或迭代对象]

列表推导式在逻辑上相当于一个循环,知识形式更加简洁。

lis = [i for i in range(100)]

print(lis)

使用列表推导式实现嵌套列表的平铺

ves = [[1,2,3],[4,5,6],[7,8,9]]

print([num for elem in ves for num in elem])

输出:

[1, 2, 3, 4, 5, 6, 7, 8, 9]

过滤不符合条件的元素,从列表中选择符合条件的元素组成新的列表

aList = [-1,-4,6,7.5,-2.3,9,-11]

print([i for i in aList if i>0])

[6, 7.5, 9]

在列表推导式中使用多个循环,实现多序列元素的任意组合,并且可以结合条件语句过滤特定元素

print([(x,y) for x in range(3) for y in range(3)])

[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]

print([(x,y) for x in [1,2,3] for y in [3,1,4] if x != y])

[(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]

列表练习

写一个循环,不断地问用户想买什么,用户选择一个商品编号,就把相应的商品添加到购物车里,最终用户输入q退出时,打印购物车里的商品列表

products = [['iphone',6888],['三星',30000],['小米',2500]]

shopping_car = []

flag = True

while flag:

print("******商品列表******")

for index,i in enumerate(products):

print("%s, %s| %s" %(index,i[0],i[1]))

choice = input("请输出您想购买的商品的编号:")

if choice.isdigit():#isdigit()判断变量是什么类型

choice = int(choice)

if choice >= 0 and choice < len(products):

shopping_car.append(products[choice])

print("已经将%s加入购物车" % (products[choice]))

else:

print("该商品不存在")

elif choice == "q":

if len(shopping_car)>0:

print("您打算购买以下商品:")

for index,i in enumerate(shopping_car):

print("%s. %s| %s" %(index,i[0],i[1]))

else:

print("您的购物车中没有添加商品")

flag = False

输出:

******商品列表******

0, iphone| 6888

1, 三星| 30000

2, 小米| 2500

请输出您想购买的商品的编号:0

已经将['iphone', 6888]加入购物车

******商品列表******

0, iphone| 6888

1, 三星| 30000

2, 小米| 2500

请输出您想购买的商品的编号:1

已经将['三星', 30000]加入购物车

******商品列表******

0, iphone| 6888

1, 三星| 30000

2, 小米| 2500

请输出您想购买的商品的编号:2

已经将['小米', 2500]加入购物车

******商品列表******

0, iphone| 6888

1, 三星| 30000

2, 小米| 2500

请输出您想购买的商品的编号:q

您打算购买以下商品:

0. iphone| 6888

1. 三星| 30000

2. 小米| 2500

1.10.列表切片

使用索引获取列表的元素(随机读取)

列表元素支持用索引访问,正向所以从0开始

colors = ["red","blue","green"]

print(colors[0])

print(colors[1])

print(colors[2])

print(colors[-1])

red

blue

green

green

1.10.1.列表的切片操作

切片操作不是列表特有的,python中的有序序列都支持切片,如字符串,元组。

切片的返回结果类型和切片对象类型一致,返回的是切片对象的子序列,如:对一个列表切片返回一个列表,字符串切片返回字符串。

格式:li[start:end:step]

start是切片起点索引,end是切片终点索引,但切片结果不包括终点索引的值。step是步长默认是1。

li=["A","B","C","D"]

t=li[0:3] #起点的0索引可以省略

print(t)

t=li[2:] #省略end,则切到末尾

print(t)

t=li[1:3]

print(t)

t=li[0:4:2] #从li[0]到li[3],设定步长为2.

print(t)

如何确定start和end,是什么关系?在step的符号一定的情况下,start和end可以混合使用正向和反向索引,无论怎样,你都要保证start和end之间有和step反向一致元素间隔,否则会切出空列表。

t=li[0:2]

t=li[0,-2]

t=li[-4,-2]

t=li[-4,2]

上面的结果都是一样的:t为["A","B"]

t=li[-1:-3:-1]

t=li[-1:1:-1]

t=li[3:1:-1]

t=li[3:-3:-1]

上面的结果都是一样的:t为["D","C"]

t=li[-1:-3]

t=li[-1:1]

t=li[3:1]

t=li[3:-3]

都切出空列表

同时,step的正负决定了切片结果的元素采集的先后

省略start和end表示以原列表全部为目标

t=li[::-1] t--->["C","B","A"] #反向切,切出全部

t=li[:] t--->["A","B","C","D"] #正向切全部

1.10.2.使用切片来原地修改列表内容

aList = [3,5,7]

aList[len(aList):] = [9] #在尾部追加元素

print(aList)

aList[:3] = [1,2,3] #替换前3个元素

print(aList)

aList[:3] = [] #删除前3个元素

print(aList)

[3, 5, 7, 9]

[1, 2, 3, 9]

[9]

1.10.3.使用del与切片结合来删除列表元素

aList = [3,5,7,9,11]

del aList[:3] #删除前3个元素

print(aList)

bList = [3,5,7,9,11]

del bList[::2] #删除偶数位置上的元素

print(bList)

[9, 11]

[5, 9]

1.10.4.切片返回的是列表元素的浅复制

所谓浅复制,是指生成一个新的列表,并且把原列表中所有元素的引用都复制到新列表中。

例如:

aList = [3,5,7]

bList = aList #bList与aList指向同一个内容

print(bList)

bList[1] = 8 #修改其中一个对象会影响另一个

print(aList)

print(aList == bList) #判断两个列表的元素是否完全一致

print(aList is bList) #判断两个列表是同一个对象

print(id(aList)) #内存地址

aList = [3,5,7]

bList = aList[::] #切片,浅复制

print(aList == bList) #两个列表的元素完全一致

print(aList is bList) #两个列表不是同一个对象

print(id(aList) == id(bList)) #内存地址不一致

bList[1] = 8

print(bList)

print(aList)

[3, 5, 7]

[3, 8, 7]

True

True

2340905449608

True

False

False

[3, 8, 7]

[3, 5, 7]

1.11.元组

元组属于不可变序列,一旦常见,用任何方法都不可以修改其元素。从形式上,元组的所有元素放在一对圆括号中,元素之间用逗号分隔。

1.11.1.元组的创建与删除

创建 使用“=”将一个元组赋值给变量

例如:

x = (1,2,3) #直接把元组赋值给一个变量

print(x)

创建只有一个元素的元组

x = (3)

print(type(x))

x = (3,)

print(type(x))

创建空元组的方法

x = ()

print(x)

x = tuple()

print(x)

()

()

使用tuple函数将其他序列转换为元组

print(tuple(range(5)))

print(tuple('abcdefg')) #把字符串转换为元组

aList = [-1,-4,6,7.5,-2.3,9,-11]

print(tuple(aList)) #把列表转换为元组

(0, 1, 2, 3, 4)

('a', 'b', 'c', 'd', 'e', 'f', 'g')

(-1, -4, 6, 7.5, -2.3, 9, -11)

删除 使用del可以删除元组对象,不能删除元组中的元素

1.11.2.元组与列表的区别

元组中的数据一旦定义就不允许更改。

元组没有append()、expend()和insert()等方法,无法向元组中添加元素

元组没有remove()或pop()方法,也无法对元组元素进行del操作,不能从元组中删除元素。

从效果上看,tuple()冻结列表,而list()融化元组。

1.12.元组的优点

元组的速度比列表更快

元组对不需要改变的数据进行“写保护”将使得代码更加安全。

元组可用作字典键(特别是包含字符串、数值和其他元组这样的不可变数据的元组)。元组有时还作为函数的返回值返回(返回多个值)。

python元组和列表都支持的方法是_python_列表和元组相关推荐

  1. python元组和列表都支持的方法是_Python进阶1-元组和列表

    本系列文章是一系列学习笔记,希望较为深入地分析Python3中的原理.性能,文章中绝大部分观点都是原作作者的观点(如下),本人对书中示例加以实践和总结,并结合相应的Python的C语言源码(3.6.1 ...

  2. python元组和列表都支持的方法_(3)python 列表和元组

    列表 元组 字段 等都是一种数据结构.其中列表和元组比较相似都是顺序保存的,都可以通过索引来找到元素. 列表和元组的主要区别:列表是可以修改的,元组不可以修改.列表用[]表示,元组用()表示 一.列表 ...

  3. python元组和列表都支持的方法_python列表方法和元组

    Python列表方法 1.append()在列表末尾追加新对象 >>> lst=[1,2,3] >>> lst [1, 2, 3] >>> lst ...

  4. IE和火狐都支持的方法(输入用户名和密码后按下 enter 键)

    在Firefox中老报"event is not defined"错误!原因是因为在Firefox中使用了不同的事件对象模型,不同于IE Dom,用的是W3C Dom. docum ...

  5. python函数isdisjoint方法_Python学习之---Python中的内置函数(方法)(更新中。。。)...

    add(item)#将item添加到s中,如果item已经在s中,则无任何效果 break#退出循环,不会再运行循环中余下的代码 bool()#将参数转换为布尔型 bytes()#将值转成bytes类 ...

  6. python中列表用什么表示_python中的列表

    1. 列表是什么,他可以用来做什么呢?当你存在这样的疑问,就往下看吧:) 列表是由一系列按特定顺序排列的元素组成的.在Python中,用[]来表示列表,并用逗号来分隔其中的元素. 我们可以创建包含字母 ...

  7. 树型列表结构宽度调整_Material Design 网格列表

    网格列表是标准列表视图的替代方法. 网格列表由以垂直和水平布局排列的重复单元格图案组成. 网格列表最适用于类似的数据类型.它们有助于提高对其所包含内容的视觉理解. 用法 网格列表最适合于呈现同质数据( ...

  8. python全栈学习总结二:数字、字符串、列表、元组、字典重要特点及方法

    一 python中数据类型 整形:int 字符串:str 列表:list 元组:tuple 字典:dict 布尔值:bool 浮点型:float 一切皆对象,在python中,所有的数据类都是看做对象 ...

  9. python列表按照指定顺序排序-Python3实现对列表按元组指定列进行排序的方法分析...

    本文实例讲述了Python3实现对列表按元组指定列进行排序的方法.分享给大家供大家参考,具体如下: Python版本: python3.+ 运行环境: Mac OS IDE: pycharm Pyth ...

最新文章

  1. 苹果宣布创立欧洲首个iOS开发中心
  2. python获取当前网页元素_Python+Selenium练习(三十)- 获取页面元素的href属性
  3. JSON转换工具---jackson
  4. JavaWeb学习过程 之c3p0的使用
  5. java重命名package_AndroidStudio怎么重命名java目录下的包名(如cn.zsn.app)
  6. 如何拉取k8s镜像_K8s 从懵圈到熟练 – 镜像拉取这件小事
  7. 解决Linux中crontab不执行ntpdate问题
  8. Java教程:Java是什么?Java的特点有哪些?
  9. win7上一个微软都不知道的快捷键
  10. java AES加密解密
  11. 实地踩坑,新鲜出炉,阿里云GPU服务器Centos7.7深度学习环境搭建实战
  12. python模板语言_3 个 Python语言 模板库比较
  13. JAVA语言程序设计课后习题----第五单元解析(仅供参考)
  14. 两种方法身份证读卡器对接,实现扫描身份证读取身份证信息功能。
  15. 基于C语言的小游戏合集
  16. mysql 关系图 工具_ER图绘制软件-DbSchema数据库关系图设计器下载v8.1.7-领航下载站...
  17. 中科微GPS模块使用教程 ATGM332D ATGM336H GSP模块 单片机程序 C程序
  18. matlab在mac中好用吗,Matlab Mac版上手
  19. php集成paypal接口,PayPal接口集成之:PHP集成PayPal标准支付接口
  20. 【无标题】Ubuntu安装linaro工具链问题

热门文章

  1. 计量经济学建模_不了解计量经济学的前世今生,怎么能学会他
  2. git idea 分支合并到另一个分支_idea如何在Git上将分支代码合并到主分支
  3. android双重for循环,Android实现ViewPager无限循环效果(二)
  4. Git的撤销操作 git reset HEAD -- <file>
  5. Linux查看某个进程的线程
  6. ubuntu05.04 linux2.6.10 内核安装
  7. mysql 5.5.修改库名_安全快速修改Mysql数据库名的5种方法
  8. 单元格格式_你最想要的自定义单元格格式来了!
  9. python3代码转python2_Python2代码转成Python3代码
  10. linux里进程监控和自动重启,Linux - linux进程监控和自动重启的简单实现