0
点赞
收藏
分享

微信扫一扫

2022-4-19 python基础学习

无聊到学习 2022-04-19 阅读 70
python

2022-4-18 python基础学习

列表

定义一个学生的分数

score =89

定义一个班的学生的分数

score1=98

score2=87

score3=69

scoren=68

scores[]=score[98,87,69,…,scoren]

求一个班的学生的平均分:

(score1+score2+score3+…+scoren)/n

1什么是列表(list)

​ 1.list 是容器型数据类型(可以同时保存多个数据类型)

​ 2.将[]作为容器的标志,里面有多个元素(一个容器中每个独立的数据就是元素),用逗号隔开:

​ [元素1,元素2,元素3,…]

​ 3.列表是可变的(可变指的是元素的个数,元素的值和元素的顺序可变) - 列表支持增删改

​ 4.列表是有序的 - 列表支持下标操作

​ 5.列表的元素:任何类型的数据都可以作为列表的元素

空列表:list1=[]

2 列表中元素的类型

  1. list1 =[29,34,56,67] - 相同类型数据

  2. list2= [29,2,3,‘abc’,True,[10,2],{‘a’:10}] - 不同数据类型

  3. 一个列表可以作为另外一个列表的元素

列表是有序的,集合是无序的

print([10,20,30]==[30,20,30])			#Falese,列表是有序的
print({10,20,30})=={30,20,10}			#True,集合是无序的

3 列表的增删改查

列表的查:获取元素

  1. 查单个元素 - 获取指定列表中指定下标对应的元素

    语法:列表[下标]

    说明:1)列表 - 可以是具体的某个列表,也可以是保存列表的变量

    ​ 2)[] - 固定写法

    ​ 3)下标 - 整数,下标又叫索引,是元素在有序序列中的位置信息

    ​ python中元素对应的下标有两种:1从前往后从0开始不断增加 2从后往前从-1开始不断减少

    ​ 注:下标不能越界

    ​ [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n6SOWUFC-1650372862523)(C:\Users\86567\AppData\Roaming\Typora\typora-user-images\image-20220418102144093.png)]

    games=[‘英雄联盟’]

    games=['英雄联盟','王者荣耀','开心消消乐','炉石传说','部落冲突','原神','绝地求生']
    print(games[1])
    print(games[100])		#索引超过序列索引
    print(games[1:-1:2])	#不为空
    print(games[1:-2:-2])	#为空
    
  2. 获取部分元素 - 切片(获取一个新列表)

    切片的完整语法

    list[开始下标:结束下标:步长]

    步长决定方向,决定怎么取值

    切片的过程:

    第一步:看步长对应的方向和开始下标到结束下标对应的方向是否一致,如果不一致,切片的结果一定为空值

    第二部:确定有效范围:从开始下标对应的元素到结束下标对应的元素,结束下标对应的元素取不到

    第三部:获取元素:通过步长获取元素:步长的正负确定获取方向,步长绝对值确定获取的时候是否跳着取,步长绝对值为1,表示一个一个取;绝对值为2,表示取一个跳一个,索引加步长

    怎么写切片

    第一步:确定开始下标:看结果中第一个元素在原列表中的下标,

    第二步:确定方向和步长

    第三步:确定结束下标

    省略:1不写步长,默认步长为+1: 列表[开始下标:结束下标],省略步长时,步长为1

    ​ 2省略开始下标:列表[:结束下标:步长]

    ​ 3省略结束下标:列表[开始下标::步长]、列表[开始下标:]

    ​ 如果步长为正,从开始下标开始往后取,一直取到最后一个元素;如果步长为负,从开始下标开始往前取,取到第一个元素为止

    print(movies[-2::-3])
    print(movies[3:6])
    print(movies[:-3])
    print(movies[:4:2])
    print(movies[-4::2])
    print(movies[1::4])
    print(movies[::3])
    

    遍历 - 将列表中的元素一个一个的全部取完

    方法1 :直接获取元素

    for 变量 in 列表:

    ​ 循环体(变量依次取到的就是列表中的元素)

    方法2 - 通过遍历下标来遍历元素

    for 变量 in range(len(列表)):

    ​ 循环体(变量取到的每个元素的下标,列表[下标]就可以取得元素

    len(列表) - 计算列表的长度

    方法3 - 同时获取下标和元素

    for 变量1,变量2 in enumerate(列表):

    ​ 循环体(变量1依次获取到的是每个元素的下标,变量2依次获取到的是每个元素)

    2 增

    1)列表.append(元素) 在列表的最后添加指定元素

    nums=[10,20]

    print(nums)

    nums.append(100)(只是一个方法)(方法不产生结果)

    print(nums)

    2)insert()

    nums=[10,20,30]

    print(nums)

    nums.insert(下标,添加的元素) - 谁的前面下标就写谁

    2删除

    第一种

    del 列表[下标] - 删除列表中指定下标对应的元素

    列表.remove(元素) - 删除列表中指定元素(如果列表中有多个相同的元素,被删除时只删除第一个元素,如果删除了列表中不存在的元素,会报错)

    #方法一
    scores=[98,79,45,55,72,64,82,90,23,45,59]			#java中数据都是指针数据
    for x in scores[:]:
        if x<60:
            scores.remove(x)
    print(scores)
    #方法二
    scores=[98,79,45,55,72,64,82,90,23,45,59]
    for x in range(len(scores)-1,-1,-1):
        if scores[x]<60:
            del scores[x]
    print(scores)
    #方法三:
    scores=[98,79,45,55,72,64,82,90,23,45,59]
    index=0
    while index<len(scores):
        if scores[index]<60:
            del scores[index]
        else:
            index+=1
    print(scores)
    

    列表.pop(),列表.pop(下标) - 取出列表中指定下标对应的元素

    3 改

    列表[下标]=新值 - 将列表中指定下标对应的元素修改成指定的值

    4 in和 not in

    元素 in 列表 - 判断列表中是否存在元素,如果存在就返回True,否则返回Falese

    列表的运算(+、*)

    算术运算符

    列表1+列表2 - 将两个列表合成产生一个新的列表

    print([10,20,30]+[100,200])   #[10, 20, 30, 100, 200]
    

    列表1*整数、整数 * 列表(n个列表合并成一个新的列表)

    print([10,20]*3)				#[10, 20, 10, 20, 10, 20]
    #创建有100个空值的列表
    print([None]*100)
    

    比较运算符

    1)比较运算符:==、!=(2个列表得长的一样)

    2)列表可以和其他类型的数据比较是否相等

    
    print([10,20,30]==[10,20,30])		#True
    print([10,20,30]==[10,30,20])		#Fales
    print([10,20]=='10,20')				#Fales
    
    

    2)比较大小-两个列表可以比较大小(比较第一对2个不相等元素的大小)(相同位置上的元素为一对,比较时是临时凑对比较)

    print([100,200,300,400]>[101,201])
    

    列表相关的函数:sum、max、min、sorted、len、list

    求和:sum(序列) - 求数字序列中所有元素的数值和

    求序列中最大值:max(序列)

    求序列中最小值:min(序列)

    排序 sorted — 将序列中的元素从小到大排序,产生一个新的列表

    sorted(序列) 从小到大

    sorted(xulie ,reverse=True) 从大到小排列

    len(序列) - 获取序列中元素的个数(长度)(迭代器,生成器不能用)

    list(序列) -将指定的序列转换成列表,将序列中的元素作为列表的元素。(所有的序列都能转换成列表)

    scores=[19,23,89,90,99,83]
    print(sum(scores))
    print(max(scores))
    print(min(scores))
    new_scores=sorted(scores)
    print(new_scores)
    print(len(scores))
    list1=list('abc123')
    print(list1)
    list2=list(range(3))
    prinnt(list2)
    

    列表常用的方法

    列表.方法()

    列表.clear() - 清空列表

    列表.copy() - 复制原列表,产生一个一模一样的新列表

    列表.count(元素) - 统计指定元素的个数

    列表.extend(序列) - 将序列中的元素全部添加到列表的最后(+是要产生一个新的列表)

    列表.index(元素) - 获取指定元素在列表中的下标值(标志的下标值,从0开始的那个下标)

    列表.reverse() -逆序(print(nums[::-1])也可以逆序,但是可以产生一个新列表,原列表不变

    列表.sort() - 将列表中的元素从小到大排序(产生一个新列表)只能用在列表

    列表.sort(reverse=True) - 将列表中的元素从大到小排序(产生一个新列表)只能用在列表

    nums=[10,23,67,89]
    nums.clear()
    print(nums)
    new_nums1=nums.copy()
    print(nums.count(10))		#0
    nums.extend('abc')
    print(nums)
    print(nums.index(10))		#0
    

    python中的变量都是指针变量( python的变量在保存数据时都是保存数据在内存中的地址)

    用一个变量直接给另一个数据赋值,赋的是地址

    列表推导式 - 一种用来创建列表的表达式

    常见推导式的写法

    结构1:[表达式 for 变量 in 序列]

    功能:创建一个列表,列表中的元素是表达式的结果 - 让变量去序列中一个一个取,每取一个值计算一次表达式的值

    应用:

    将原序列中所有的元素,经过统一的变换,转换成新的列表

    结构2:[表达式 for 变量 in 序列 if 条件语句]

    功能:创建一个列表,列表中的元素是表达式的结果 - 让变量去序列中一个一个取值,每取一个值判断一次条件是否成立,如果成立计算一次表达式的值作为新创建的列表的元素

    应用:用来对列表进行删除,修改

    list1=[10 for x in 'abc']		#[10,10,10]
    list_2=[x for x in range(3)]		#[0,1,2]
    list_3=[x*2 for x in range(3)]	#[0,2,4]
    list_4=[x%2==0 for x in range(5)]	#[True,Falese,True,Falese,True]
    list_5=[x for x in range(5) if x %2==0]
    
    #练习1 提出nums中所有元素的个位数
    #练习2 将nums中所有的元素都乘以10 
    nums=[23,78,562,98,71,99]
    nums_1=[x%10  for x in nums]
    nums_2=[x*10 for x in nums]
    print(nums_1,nums_2)
    
    #练习3
    nums=[23,89,67,21,78,20]
    list2=[x for x in nums if x%10<5]
    
    #练习4 用推导式删除scores中小于60的元素
    scores=[30,56,78,91,83,88,45,57,60]
    new_scores=[x for x in scores if x<60]
    
    #练习5 将scores中的元素全部变成及格或不及格
    scores=[30,56,78,91,45,57,60]
    new_scores=['及格' if x>=60 else '不及格' for x in scores ]
    print(new_scores)
    

补充:python中的三目运算符

1)C的三目运算符 - ?:

条件语句?值1:值2 - 如果条件语句为真,整个表达式的结果是值1,否则结构是值2

2)python的三目运算符 - if-else

值1 if 条件语句 else 值2 - 如果条件语句为真,整个表达式的结果是值1,否则结构是值2

age=89
if age>=18:
    result='成年'
else:
    result='未成年'
result='成年' if age>=18 ese '未成年'

作业

  1. 创建一个列表,列表中有10个数字, 保证列表中元素的顺序,对列表进行排重,并对列表使用进行降序排序
例如:[70, 88, 91, 70, 107, 234, 91, 177, 282, 197]
		--- 去重之后 [70, 88, 91, 107, 234, 177, 282, 197]
  	---- 降序排序 [282, 234, 197, 177, 107, 91, 88, 70]
nums=[70, 88, 91, 70, 107, 234, 91, 177, 282, 197]
for x in nums[::-1]:
    nums.remove(x)
    if x not in nums:
        nums.append(x)
print(nums[::-1])
nums.sort(reverse=True)
print(nums)
  1. 利用列表推导式, 完成以下需求

a. 生成一个存放1-100中各位数为3的数据列表

结果为 [3, 13, 23, 33, 43, 53, 63, 73, 83, 93]
nums=[x for x in range(1,101) if x %10==3]
print(nums)

b. 利用列表推到是将 列表中的整数提取出来

例如:[True, 17, "hello", "bye", 98, 34, 21] --- [17, 98, 34, 21]
nums=[True, 17, "hello", "bye", 98, 34, 21]
nums_new=[x for x in nums if type(x)==int ]
print(nums_new)

c.利用列表推导式 存放指定列表中字符串的长度

例如: ["good", "nice", "see you", "bye"] --- [4, 4, 7, 3]
nums=["good", "nice", "see you", "bye"]
nums_new=[len(x) for x in nums]
print(nums_new)

d. 利用列表推导式删除列表中整数个位数小于5的元素

例如:[24, 'abc', 99, True, 21, 38, 'hello'] --- ['abc', 99, True, 38, 'hello']
nums=[24, 'abc', 99, True, 21, 38, 'hello']
nums_new=[x for x in nums if type(x)==int and x%10<5 ]
print(nums_new)

e. 利用列表推导式获取元素是元组的列表中每个元组的最后一个元素

例如:[(10, 20, 30), ('abc', 'hello'), (1, 2, 3.4), (True, False)]  --- [30, 'hello', 3.4, False]
nums=[(10, 20, 30), ('abc', 'hello'), (1, 2, 3.4), (True, False)]
nums_new=[x[-1] for x in nums]
print(nums_new)

f.利用列表推导式将数字列表中所有的奇数乘以2,所有的偶数除以2

例如: [23, 4, 67, 88, 90, 21]  -> [46, 2, 134, 44, 45, 42]
nums=[23, 4, 67, 88, 90, 21]
nums_new=[x*2 if x%2 else x//2 for x in nums]
print(nums_new)
  1. 已知一个列表获取列表中指定元素所有的下标

    例如:[10, 20, 34, 10, 9, 78]
    10的下标:[0, 3]
    20的下标:[1]
    30的下标:[]
    
    nums=[10, 20, 34, 10, 9, 78]
    print(nums.index(10))
    print(nums.index(20))
    print(nums.index(30))
    
  2. *已知一个数字列表,写程序判断这个列表时候是连续递增列表。

    例如:
    [1, 2, 3, 4, 5]   -> True
    [23, 45, 78, 90]  -> True
    [1, 3, 2, 4, 5]	-> False
    
    nums=[1, 2, 3, 4, 5]
    nums_1=sorted(nums)
    print(nums==nums_1)
    
  3. 已知两个列表,将两个列表按照下面的规律交叉合并

    A = [10, 20, 30, 40, 50]
    B = [100, 200, 300]
    结果:[10, 100, 20, 200, 30, 300, 40, 50]
    
    A = [10, 20, 30, 40, 50]
    B = [100, 200, 300]
    i=1
    for x in range(len(B)):
        A.insert(i,B[x])
        i+=2
    print(A)
    
  4. 已知两个有序列表,将两个列表合并,合并后的新列表中元素仍然是递增列表

    A = [10, 20, 30, 40, 50]
    B = [25, 44, 60]
    结果:[10, 20, 25, 30, 40, 45, 50, 60]
    
    A = [10, 20, 30, 40, 50]
    B = [25, 44, 60]
    C = A+B
    C.sort()
    print(C)
    
    A = [10, 20, 30, 40, 50]
    B = [100, 200, 300]
    结果:[10, 100, 20, 200, 30, 300, 40, 50]
    
    A = [10, 20, 30, 40, 50]
    B = [100, 200, 300]
    i=1
    for x in range(len(B)):
        A.insert(i,B[x])
        i+=2
    print(A)
    
  5. 已知两个有序列表,将两个列表合并,合并后的新列表中元素仍然是递增列表

    A = [10, 20, 30, 40, 50]
    B = [25, 44, 60]
    结果:[10, 20, 25, 30, 40, 45, 50, 60]
    
    A = [10, 20, 30, 40, 50]
    B = [25, 44, 60]
    C = A+B
    C.sort()
    print(C)
    
举报

相关推荐

0 条评论