Python学习第五章

序列,列表

1.序列类型

在python中,序列是基本的数据结构,主要利用序列进行的操作有更新,索引,切片,加,乘,删除等等。我们要熟练掌握牢记这些方法,运用于列表中。

2.列表的类型及操作

如何判断是一个列表呢,列表的特征是用方括号 [] 中的元素组成,内部是利用逗号隔开的元素,在查找删除等操作的时候可以指定某一个元素,其他元素依次输出。

列表的内置函数也要掌握清楚,例如
这里定义list = [‘西瓜霜’,‘云南白药’,‘万通筋骨贴’,‘甘草片’,‘薄荷叶’ ]
Len(list)为列表的长度
Max(list)返回当前列表的最大值
Min(list)返回列表的最小值

list = ['西瓜霜','云南白药','万通筋骨贴','甘草片','薄荷叶' ]
list1 = [1,2,3,4,5]print("list的列表:" ,list)print("列表的长度为:" ,len(list))print("list1的列表:" ,list1)print('列表的最大值为:' , max(list1))print('列表的最小值为:' , min(list1))

同时要知道列表的脚本代码
列表和列表可以相加
列表的乘法

print('列表的相加:', list+list1) # 这里可以很清楚的看出 列表的相加是在list的列表后面加入list1的内容print('列表的相乘:' , list1*3) # 列表的相乘是列表list1的自增 相当于 list1 + list1 + list1

3.列表推导式介绍

列表的索引 是从0开始而不是1开始,如果索引为负数,则是从后往前数

list = ['西瓜霜','云南白药','万通筋骨贴','甘草片','薄荷叶' ]
print(list[1]) # 这里的输出结果是云南白药,但是如列表可见,云南白药是在列表的第二个位置,所以列表的索引是从0开始的
#云南白药
print(list[-1])
#薄荷叶

修改某元素,可直接利用指定位置的修改

list = ['西瓜霜','云南白药','万通筋骨贴','甘草片','薄荷叶' ]
print('原列表为:', list)
list[1] = '红花油' # 这里修改列表的元素
print('修改后的列表为', list)
#['西瓜霜', '红花油', '万通筋骨贴', '甘草片', '薄荷叶']

在列表中的末尾添加元素,可以利用列表的append([需要添加的值 ])方法

list = ['西瓜霜','云南白药','万通筋骨贴','甘草片','薄荷叶' ]
list.append('芥末')
print('修改后的:' ,list)

在列表中插入新的元素,可以利用 insert([插入的位置],[插入的值])方法

list = ['西瓜霜','云南白药','万通筋骨贴','甘草片','薄荷叶' ]
list.insert(1,'维生素')
print('修改后的:' ,list)
#修改后的: ['西瓜霜', '维生素', '云南白药', '万通筋骨贴', '甘草片', '薄荷叶', '芥末']

从列表中删除元素,可以直接利用del语句删除指定位置的值。同时在这里也可以利用列表 remove([元素]) 的方法移除掉列表中的元素

del(list[1])# 将刚刚插入的维生素删除掉
print('修改后的:' ,list)#修改后的: ['西瓜霜', '云南白药', '万通筋骨贴', '甘草片', '薄荷叶']list.remove(list[1])
print('修改后的:' ,list)#修改后的: ['西瓜霜', '万通筋骨贴', '甘草片', '薄荷叶']

若想统计列表中元素出现过的次数,可以利用count([元素])方法

list = ['西瓜霜','云南白药','万通筋骨贴','甘草片','薄荷叶','西瓜霜','万通筋骨贴' ]
print('出现的次数为:' ,list.count('西瓜霜'))
# 2

列表的反转,若想让列表反着排列,可以利用list.reverse()方法

print('原来的列表为:' ,list)
list.reverse()
print( '现在的列表为:' ,list)
# 原来的列表为: ['西瓜霜', '云南白药', '万通筋骨贴', '甘草片', '薄荷叶', '西瓜霜', '万通筋骨贴']
# 现在的列表为: ['万通筋骨贴', '西瓜霜', '薄荷叶', '甘草片', '万通筋骨贴', '云南白药', '西瓜霜']

列表的内部排序,利用sort(key = None,reverse = False)方法

list.sort() #默认按照首字母的顺序排序
print(list)
#['万通筋骨贴', '万通筋骨贴', '云南白药', '甘草片', '薄荷叶', '西瓜霜', '西瓜霜']list1 = [1,3,2,4,0,4]
list1.sort()
print(list1)
# [0, 1, 2, 3, 4, 4]

清空列表内的所有值可以利用列表的clear( [列表名] )

list.clear()
print(list)
#这里做了清空 ,所以输出结果为空列表 []

复制列表内的元素利用列表的copy( [ 列表名] )方法

list =  list1.copy() #我们对list做了清空,现在复制list1的值,所以现在list的值等于list1的值
print(list)
# [0, 1, 2, 3, 4, 4]

实训内容
1、(1)给定两个列表:ls1=[2,1,4,3]和ls2=[‘c’,’a’,’b’],按顺序执行以下语句,输出执行对应方法后的ls1和ls2。
1)ls1.remove(2)
2)ls1.sort()
3)ls1.append([ls2.index(‘b’)])
4)ls2.pop(ls1.pop(2))
5)ls2.insert(s1[0],’d’)

(2)有列表ls=[1,2,‘a’,‘b’,‘hello’], 分别执行ls1=ls.append([3,4])、ls2=ls+[5,6]、ls2+=[7,8],并通过id()函数查看每一步执行的列表的内存首地址,type()函数查看ls1的类型;观察输出结果,指明append()、+、+=操作哪种属于列表的原地操作,哪种属于创建新的列表。

通过观察列表的id值和type,如果id相等就是列表的原地操作,如果列表的id发生了变换,就代表在内存中列表的值变化过

(3)分别使用内置函数sorted()和列表类型的sort()方法对列表stuScore进行排序,使其按照分数从高到低排序。

列表为:
stuScore=[(“stu1”,“A”,95),(“stu2”,“B”,82),(“stu3”,“D”,66),(“stu4”,“B”,82),(“stu5”,“A”,99),(“stu6”,“C”,78)]
排序后结果为:
[(‘stu5’, ‘A’, 99), (‘stu1’, ‘A’, 95), (‘stu2’, ‘B’, 82), (‘stu4’, ‘B’, 82), (‘stu6’, ‘C’, 78), (‘stu3’, ‘D’, 66)]

2.首字母缩略词是一个单词,是从短语中的单词取第一个字母形成的。例如,RAM是“random access memory”的缩写。

3.编写一个函数,能够生成n个随机小数,然后测试代码,生成并输出用户指定个数的随机小数。随机密码生成。

4.键盘输入一组实数,存放于列表之中。求这组数据的最大值、最小值、平均数、中位数。

5.列表推导式练习
列表推导式使用非常简洁的方式来快速生成满足特定需求的列表,代码具有非常强的可读性。
语法:[表达式 for 变量 in 序列或者可迭代对象 ]
[(x, y) for x in [1, 2, 3] for y in [3, 1, 4] if x != y] #等价形式是什么?
(1)matrix = [ [1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]] , [[row[i] for row in matrix] for i in range(4)]的等价形式是什么?
(2)请用列表推导式完成:给定列表[1,9,8,7,6,5,13,3,2,1],删除其中所有奇数后再输出。
(3)请用列表推导式完成:将由1、2、3、4这4个数字组成的每位数都不相同的所有三位数字存入列表中并输出该列表。

# (3)分别使用内置函数sorted()和列表类型的sort()方法对列表stuScore进行排序,使其按照分数从高到低排序。
#
# 列表为:
# stuScore=[("stu1","A",95),("stu2","B",82),("stu3","D",66),("stu4","B",82),("stu5","A",99),("stu6","C",78)]
# 排序后结果为:
# [('stu5', 'A', 99), ('stu1', 'A', 95), ('stu2', 'B', 82), ('stu4', 'B', 82), ('stu6', 'C', 78), ('stu3', 'D', 66)]stuScore=[("stu1","A",95),("stu2","B",82),("stu3","D",66),("stu4","B",82),("stu5","A",99),("stu6","C",78)]
print(sorted(stuScore,key=lambda student:student[2],reverse=True)) #这里利用学生按照分数排序# 2.首字母缩略词是一个单词,是从短语中的单词取第一个字母形成的。s=input("请输入:")
n=s.split()
for i in range(len(n)):print((n[i][0]).upper(),end='')# 2、编写一个函数,能够生成n个随机小数,然后测试代码,生成并输出用户指定个数的随机小数。
# 这里提供两种解决方法
# 第一种
import random
import string
def randCode():c=string.ascii_letters+string.digitsls=[]for i in range(8):ls.append(random.choice(c))return ls
def main():n=input("请输入要产生的随机密码的个数:")for i in range(int(n)):print(randCode())
main()
input()# 第二种import random
import stringdef randCode():c = string.ascii_letters + string.digitsls = []s = ''for i in range(8):# s+=random.choice(c)s += c[random.randint(0, len(c) - 1)]ls.append(s)return lsdef main():n = input("请输入要产生的随机密码的个数:")ls = []for i in range(int(n)):ls += randCode()print(ls)main()# 3、键盘输入一组实数,存放于列表之中。求这组数据的方差,最大值、最小值、平均数、中位数。from math import sqrt
def getNum():ls=[]num=eval(input("请输入一组数据(以逗号分隔):"))ls=list(num)return ls
def mean(ls):#求平均值total=0.0for item in ls:total+=itemreturn total/len(ls)
def Sdev(ls,mean_ls):#求方差sdev=0for item in ls:sdev+=pow(item-mean_ls,2)return sqrt(sdev/(len(ls)-1))
def mid(ls):#求中位数ls.sort()if len(ls)%2!=0:mid=ls[len(ls)//2]else:mid=(ls[len(ls)//2]+ls[len(ls)//2-1])/2return mid
def test():lis=getNum()m=mean(lis)s=Sdev(lis,m)d=mid(lis)print("平均数:{},方差:{:.2f},中位数:{}".format(m,s,d))# 4、列表推导式练习list1=[1,9,8,7,6,5,13,3,2,1]
print("列表:",list1)
list1=[i for i in list1 if i%2==0]
print("删除其中所有奇数:",list1)digits=(1,2,3,4)
a=[i*100+j*10+k for i in digits for j in digits for k in digits \if i!=j and j!=k and i!=k]
print(a)

python——列表相关推荐

  1. python列表(数组)

    python列表(数组) 列表(list)  就是 数组 - 列表是Python中的一个对象 - 对象(object)就是内存中专门用来存储数据的一块区域 - 之前我们学习的对象,像数值,它只能保存一 ...

  2. insert 语句的选择列表包含的项多于插入列表中的项_如何定义和使用Python列表(Lists)

    Python中最简单的数据集合是一个列表(list).列表是方括号内用逗号分隔的任何数据项列表.通常,就像使用变量一样,使用=符号为Python列表分配名称. 如果列表中包含数字,则不要在其周围使用引 ...

  3. python列表嵌套字典取值_Python基础语法:你不得不知的几种变量类型

    (点击上方快速关注并设置为星标,一起学Python) 作者:kina_chen來源:简书 01. Python编码Python中默认的编码格式是 ASCII 格式,在没修改编码格式时无法正确打印汉字, ...

  4. python列表的实现原理_Python列表对象实现原理

    Python 列表对象实现原理 Python 中的列表基于 PyListObject 实现,列表支持元 素的插入.删除.更新操作,因此 PyListObject 是一个变长 对象(列表的长度随着元素的 ...

  5. Python 列表、字典、元组的一些小技巧

    1. 字典排序 我们知道 Python 的内置 dictionary 数据类型是无序的,通过 key 来获取对应的 value.可是有时我们需要对 dictionary 中的 item 进行排序输出, ...

  6. python列表(list)+索引切片+修改+插入+删除+range函数生成整数列表对象

    python列表(list)+索引切片+修改+插入+删除+range函数生成整数列表对象 列表(list)是什么? 列表是Python中内置有序.可变序列,列表的所有元素放在一对中括号"[] ...

  7. python列表(list)中出现次数最多的元素使用collection包的Counter方法

    python列表(list)中出现次数最多的元素使用collection包的Counter方法 collections模块自Python 2.4版本开始被引入,包含了dict.set.list.tup ...

  8. python 列表、字典转json字符串

    python 列表.字典转json字符串 代码 import json data1 = [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ] data ...

  9. python列表字典操作_Python 列表(list)、字典(dict)、字符串(string)常用基本操作小结...

    创建列表 sample_list = ['a',1,('a','b')] Python 列表操作 sample_list = ['a','b',0,1,3] 得到列表中的某一个值 value_star ...

  10. python读取字符串的list dict_转:Python 列表(list)、字典(dict)、字符串(string)常用基本操作小结...

    1 创建列表2 sample_list = ['a',1,('a','b')]3 4 Python 列表操作5 sample_list = ['a','b',0,1,3]6 7 得到列表中的某一个值8 ...

最新文章

  1. 福利直投!这个活动承包你2020全年技术干货
  2. 面霸告诉你:面试官都有哪些套路?
  3. 查看Flink的Job Graph时的问题
  4. python await原理_JavaScript async/await原理及实例解析
  5. c语言中fflushstdin作用,C语言fflush(stdin)函数是什么意思,在什么情况下用它
  6. rk3399硬件设计指南_CMMI2实施过程系列-系统设计
  7. Spring Schedule定时关单快速入门
  8. linux创建zip+函数,linux+shell基础知识
  9. JavaScript中的元素获取与操作
  10. delphi7 如何判定dbgrid两行重复_教你如何在服装上加入好看的毛线刺绣花边
  11. ORACLE 發送郵件(全)
  12. win10怎么用计算机二进制,教你如何使用Win10计算器进行进制转换?
  13. debian 安装teamviewer
  14. 网易云到“网抑云”:分析用户运营的指标监控和召回机制
  15. badboy录制脚本错误问题解决
  16. 路由配置与管理——ISIS路由配置与管理
  17. 8.openCV 裁剪图像
  18. MTK_android11_WIFI(内网)和4G(外网)共存
  19. 今晚开启公募的雪崩协议,带协议层先进入3.0
  20. Comparator、compare、compareTo

热门文章

  1. 为什么苹果允许「自助修 iPhone」这件事,与每个人息息相关?
  2. 507. Perfect Number
  3. 【react native】Flatlist实现上拉滚动加载
  4. c语言中输入格式带括号,C语言中printf()后的括号里面的怎么写,表示什么?...
  5. 查看linux网口连接时间,linux检测网口连接状态
  6. 可解释性神经网络——2.添加约束的xNN
  7. 在Xcode中配置Python 并支持input
  8. 项目经理必须知道的7种项目管理方案
  9. 深度学习:生成式对抗网络,让机器在博弈中实现“自我成长”
  10. 西门子1200 总线控制V90伺服程序模板 两种控制模式 1.基于111报文自己编写的PN通讯控制V90伺服程序