0
点赞
收藏
分享

微信扫一扫

python学习Day-6

雨鸣静声 2022-02-22 阅读 55

Learning Diary for Python - 6

一、列表相关操作

1.数学运算符

  • 加法运算: - +

    • 列表1+列表2 - 将两个列表合并成一个新的列表

      #新列表顺序和进行加法时位置相关
      list1=[1,2,3]
      list2=[1,4,6,88]
      result=list1+list2
      print(result)#[1, 2, 3, 1, 4, 6, 88]
      
  • 乘法运算

    • 列表*N - 将列表中的元素重复产生N次

      list1=[1,2,3]
      print(list1*3)#[1, 2, 3, 1, 2, 3, 1, 2, 3]
      
  • 比较

    • 比较相等:==、!=

      lsit1=[10,20,30]
      print(list1==[10,20,30])#True
      print(list1==[10,30,20])#False
      
    • 比较大小:>、<、>=、<=

      • 两个列表比较大小、比较的是第一对不相等的元素大小

        #与元素个数无关,只比较第一对不相等元素
        list1=[10,1,5,10,12,555]
        list2=[10,10,555]
        print(list1>list2)#False
        
        #有比没有大
        list1=[1,2,10]
        list2=[1,2,10,-999]
        print(list1>list2)#False
        
        #第一对不相等的元素种类不同则会报错
        list1=[1,2,10,'y']
        list2=[1,2,10,'x']
        print(list1>list2)#报错
        
        #字符串也可比较
        list1=[1,2,10,'y']
        list2=[1,2,10,'x']
        print(list1>list2)#True
        

2.in 和 not in

  • 元素 in 列表 - 判断指定列表中是否存在指定元素

  • 元素 not in列表 - 判断指定列表中是否不存在指定元素

    print(10 in [10,20,30])#True
    print(100 not in [10,20,30])#True
    print([10,20]in [10,20,30])#False
    print([10,20]in [[10,20],50])#True
    

二、相关函数(系统函数)

1.求和

  • 格式:sum(列表)

  • 求列表中所有元素的和(只能用于数字列表)

    #1+2+3+...+100
    print(sum(range(1,101)))#5050
    

2.求极值

  • 格式:max(列表)、min(列表)

  • 将列表中的元素从小到大排序

    num=[1,2,3,4,10,400,-15]
    print(max(num))#400
    print(min(num))#-15
    

3.排序

  • 格式:sort(列表)

  • 将列表中的元素从小到大依次排列后产生一个新的列表

  • 不会改变原列表的顺序

    #从小到大
    list=[1,2,3,77,34,-1,23]
    list2=sorted(list)
    print(list)#[1, 2, 3, 77, 34, -1, 23]
    print(list2)#[-1, 1, 2, 3, 23, 34, 77]
    
    #从大到小
    list=[1,2,3,77,34,-1,23]
    list2=sorted(list,reverse=True)
    print(list)#[1, 2, 3, 77, 34, -1, 23]
    print(list2)#[77, 34, 23, 3, 2, 1, -1]
    

4.list

  • 可将其他数据转换成列表

    #只有容器型数据能转换为列表
    result=list('abc')
    print(result)  #['a', 'b', 'c']
    
    #其他序列转换为列表时直接将序列的元素作为列表的元素
    result=list(range(5))
    print(result)  #[0, 1, 2, 3, 4]
    

三、相关方法

1.方法使用的套路

#列表.xxx()
list.append()
list.sort()
list.clear()
lsit.copy()

2.clear

  • 清空列表

  • 列表.clear

    list1=[1,2,3,4]
    list1.clear()
    print(list1)#[]
    

3.copy

  • 复制指定列表产生一个一样的新列表,将新的列表返回

  • 列表.copy()

    #注!直接用变量给另一个变量赋值,会导致两个变量指向同一内存
    list1=[1,2,3,4]
    list2=list1
    list1.append(15)
    print(list2)#[1, 2, 3, 4, 15]
    
    list1=[1,2,3,4]
    list2=list1.copy()
    list1.append(15)
    print(list2)#[1, 2, 3, 4]
    

4.count

  • 统计变量中指定元素的个数

  • 列表.count(元素)

    list=[1,2,4,4,4,15,2]
    print(list.count(4))#3
    print(list.count(2))#2
    print(list.count(999))#0
    

5.extend

  • 将序列中所有的元素都添加到列表中

  • 列表.extend(序列)

    #extend 将序列中的元素依次添加
    list=[1,2,3]
    list.extend([20,30])
    print(list)#[1, 2, 3, 20, 30]
    
    #append 将序列作为一个元素添加
    list=[1,2,3]
    list.append([20,30])
    print(list)#[1, 2, 3, [20, 30]]
    

6.index

  • 获取元素的下标

  • 列表.index(元素)

    list=[12,89,7,65,23,89]
    print(list.index(12))#0
    print(list.index(65))#3
    print(list.index(120))#报错
    print(list.index(89))#1 反回先索引到的元素下标
    

7.reverse

  • 反向列表中元素

    list=[1,6,4,2,77,1]
    list.reverse()
    print(list)#[1, 77, 2, 4, 6, 1]
    

8.sort

  • 对列表进行排序

  • sort对原列表进行排序

  • sorted是产生一个原列表重新排序的新列表

    #sort
    list=[1,6,4,2,77,1]
    list.sort()
    print(list)#[1, 1, 2, 4, 6, 77]
    
    #sorted
    list=[1,6,4,2,77,1]
    list1=sorted(list)
    print(list1)#[1, 1, 2, 4, 6, 77]
    print(list)#[1, 6, 4, 2, 77, 1]
    

四、列表推导式

1.定义

​ 穿件列表的表达式

2.功能

​ 对元素进行变换和筛选

3.结构

  • 结构一

    • 表达式
    结构:
    [表达式 for 变量 in 序列]
    
    原理:
    创建一个列表(让变量取序列中取值计算,将结果作为新列表的元素
    
    • 练习
    nums=[28,10,81,301,22]
    
    #将列表的所有元素乘2,转换为一个新的列表
    nums=[28,10,81,301,22]
    nums2=[i*2 for i in nums]
    print(nums2)
    
    #基于nums得到[8,0,1,1,2]
    nums2=[i%10 for i in nums]
    print(nums2)
    
    #基于nums得到[10,1,9,4,4]
    nums2=[i//100+i//10%10+i%10 for i in nums]
    print(nums2)
    
    #基于nums得到[True,True,False,False,True]
    nums2=[i%2==0 for i in nums]
    print(nums2)
    
    
  • 结构二

    • 表达式
    结构:
    [表达式 for 变量 in 序列 if 条件语句]
    
    原理:
    创建一个列表(让变量取序列中取值并进行判断,通过判断再计算,将结果作为新列表的元素
    
    作用:
    将原序列中的元素按照指定规则(表达式)进行统一变换得到的列表
    
    • 练习
    #取10到30之间的奇数
    num2=[i for i in range(10,31) if i%2]
    print(num2)
    
    #基于nums得到[81,301]
    nums=[28,10,81,301,22]
    num2=[i for i in nums if i%2]
    print(num2)
    
    #基于list1,得到[10,20]
    list1=[10,'12,3',1.23,20,'abc',True]
    nums=[i for i in list1 if type(i)==int]
    print(nums)
    
    #基于分数列表,提取类表中的所有及格分数
    scores=[18,89,67,90,45,34,12,89]
    scores=[i for i in scores if i>=60]
    print(scores)
    

五、元组

1.认识元组(tuple)

  • 是容器

    #空元组
    t=()
    
    #单个元素的元组(重要)	-	必须再唯一的元素后加逗号
    (1)不加逗号
    t=(20)
    print(t,type(t))#20 <class 'int'>
    
    (2)加逗号
    t=(20,)
    print(t,type(t),len(t))#(20,) <class 'tuple'> 1
    
    
    
  • 是不可变的列表

  • 用()作为容器的标志,多个元素用,隔开(元素1,元素2…)

  • 不支持增删改操作

  • 有序的

2.操作

  • 列表和增删改无关的操作元组都支持

  • name=(1,2,3,4,5,6,7)
    
    print(name[1],name[-1]) #2 7
    print(name[1:-1:2]) #(2, 4, 6)
    
  • 相关操作

    print((10,20)+(100,200)) #(10, 20, 100, 200)
    print((10,20)*3) #(10, 20, 10, 20, 10, 20)
    print((10,20)=(20,10)) #False
    print(10 in (10,20)) #True
    
  • 相关函数

    • 不涉及更改的均支持(sort不支持,sorted支持)
  • 部分相关方法

    • count
    • index
    #count
    a=(10,20,30,30,30,40)
    print(a.count(30))
    
    #index
    a=(10,20,30,30,30,40)
    print(a.index(30))#返回首次匹配到的元素下标
    
  • 元组不只是不可变的列表

    • 单元素的元组(元素,)
    • 在没有歧义的情况下,可以省略()
    t1 = (10, 20, 30)
    t2 = 10, 20, 30
    print(t1, t2)       # (10, 20, 30) (10, 20, 30)
    
    • 获取元素的时候,可以让变量的个数和元祖中元素个数一致
    #变量和元素个数一致
    t1 = (10, 20, 30)
    x, y, z = t1
    print(x, y, z)  # 10 20 30
    
    #变量和元素个数不一致(优先为没有*的赋值,剩余的均赋给带*的)
    num=[1,2,3,4,5,6,7,8,9]
    x, *y =num
    print(x,y) #1 [2, 3, 4, 5, 6, 7, 8, 9]
    *x, y =num
    print(x,y)#[1, 2, 3, 4, 5, 6, 7, 8] 9
    x, *y, z =num
    print(x,y,z)#1 [2, 3, 4, 5, 6, 7, 8] 9
    

六、练习题

  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]
list=[70, 88, 91, 70, 107, 234, 91, 177, 282, 197]

list2=[]
for i in list:
    if i in list2:
        continue
    else:
        list2.append(i)
print(list2)
list2.sort(reverse=True)
print(list2)
  1. 利用列表推导式, 完成以下需求

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

结果为 [3, 13, 23, 33, 43, 53, 63, 73, 83, 93]
#方法一
list=[i for i in range(3,101,10) ]
print(list)

#方法二
list=[i for i in range(1,101) if i %10==3 ]
print(list)

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

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

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

例如: ["good", "nice", "see you", "bye"] --- [4, 4, 7, 3]
list=["good", "nice", "see you", "bye"]
list2=[len(i) for i in list]
print(list2)

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

例如:[24, 'abc', 99, True, 21, 38, 'hello'] --- ['abc', 99, True, 38, 'hello']

list=[24, 'abc', 99, True, 21, 38, 'hello']
list2=[i for i in list if type(i)==int]
list3=[i for i in list2 if i%10<5]
list4=[i for i in list if not i in list3]
print(list4)

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

例如:[(10, 20, 30), ('abc', 'hello'), (1, 2, 3.4), (True, False)]  --- [30, 'hello', 3.4, False]
list=[(10, 20, 30), ('abc', 'hello'), (1, 2, 3.4), (True, False)]
list2=[i for i in list if type(i)==tuple]
list3=[i[-1] for i in list2]
print(list3)

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

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

    例如:[10, 20, 34, 10, 9, 78]
    10的下标:[0, 3]
    20的下标:[1]
    30的下标:[]
    
    list=[10, 20, 34, 10, 9, 78]
    i=int(input('请输入要查询的数字:'))
    index1=[]
    while i in list:
        index1.append(list.index(i))
        list.remove(i)
        list.insert(0,'')
    print(index1)
    
  2. *已知一个数字列表,写程序判断这个列表是否是连续递增列表。

    例如:
    [1, 2, 3, 4, 5]   -> True
    [23, 45, 78, 90]  -> True
    [1, 3, 2, 4, 5]	-> False
    
    list=[1, 3, 2, 4, 5]
    i=list[0]
    for x in list:
        if x >=i:
            i=x
        else:
            print(x >=i)
            break
    else:
        print(x >=i)
    
  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]
    C=[]
    for x in range(min(len(A),len(B))):
        C.append(A[x])
        C.append(B[x])
    C.extend(A[len(B):len(A)])
    print(C)
    
  4. 已知两个有序列表,将两个列表合并,合并后的新列表中元素仍然是递增列表

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

相关推荐

day-6 作业

day-6 总结

#day-6方法

Python-day6

Python Day6

Linux学习-DAY6

java学习 day6

JAVA学习day6

0 条评论