ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

总结day6-day7

2022-02-22 18:03:19  阅读:199  来源: 互联网

标签:总结 10 下标 nums day6 day7 元素 列表 print


总结day6-day7

认识列表

# 非容器 - 一个变量只能保存一个数据(只有一个格子的盒子
# 容器 - 一个变量可以同时保存多个数据(有多个格子的盒子)
  1. 什么是列表(list)
列表是容器型数据类型(一个列表可以同时保存多个数据);
将[]作为容器,里面多个元素用逗号隔开;
[元素1,元素2,元素3,...]

2) 
列表是可变的(指的是列表中元素的个数、元素的值和元素的顺序可变);列表是有序的(每个元素都有位置对应的下标[索引])

3)元素的要求 - 没有要求
任何类型的数据,都可以作为列表的元素;而且同一个列表可以保存不同类型的数据
# 空列表
list = []
print(list)

# 列表元素类型可以一样也可以不一样
list2 = [10,11,12,123]
print(list2)

list3 = [1.1,2,'aaa',True,None]
print(list3)

list4 = [10,1,[1,2],3]
print(list4)

查 - 获取列表元素

1)查单个 - 获取一个元素

'''
语法:
列表[下标]

说明:
列表 - 任何结果是列表的表达式,一般用保存列表的变量
[] - 固定写法
下标 - 下标又叫索引,它是有序列中元素在序列中的位置信息。
        列表中没有元素都有两个下标值:一个是从0开始依次增加的下标值(0表示第一个元素,1表示第二个元素),
                                 一个是从-1开始依次减少的下标值(-1表示倒数第一个元素,-2表示倒数第二个元素)
注意:下标不能越界,下标有效范围: 0~长度-1  和-1~ -长度
len(列表) - 获取列表中元素的个数(获取列表长度)

2)切片 - 获取部分元素

1, 完整语法
列表[开始下标:结束下标:步长]

说明:
开始下标、结束下标 - 下标值:用来确定切片的范围:[开始下标,结束下标)
步长 - 正整数或者负整数;用正负号来决定获取的方向(正-从前往后取;负-从后往前取),用绝对值来决定获取的时候是否跳着取,跳几个
: - 固定写法

获取原理:
1)如果步长对应的方向 和 开始下标对应的元素到结束下标对应的元素的方向不一致,切片无效,结果是空列表
2)如果切片有效,先确定有效范围([开始下标,结束下标)),然后在有效范围内根据步长方向按照步长的绝对值获取元素,创建新的列表
num1 = [1,2,3]
num2 = [3,2,1]
print(num1==num2[-1::-1])
film_names = ['碟中谍', '肖申克的救赎', '霸王别姬', '星际穿越', '阿Q正传', '大话西游', '绿皮书', '这个杀手不太冷']

# 练习2:写切片,获取列表元素,得到一下结果
# ['肖申克的救赎', '霸王别姬', '星际穿越']
# ['碟中谍', '肖申克的救赎']
# ['霸王别姬', '阿Q正传', '绿皮书']
# ['这个杀手不太冷', '绿皮书', '大话西游', '阿Q正传']
# ['阿Q正传', '肖申克的救赎']

print(film_names[1:4])
print(film_names[0:2])
print(film_names[2::2])
print(film_names[-1:-5:-1])
print(film_names[-4::-3])

# 问题:
# 方法1:结束下标越界
# 方法2: 省略结束下标



# 3)遍历 - 一个一个的取,取完
'''
方法一:直接获取元素
for 变量(元素) in 列表:
    pass
'''
nums = [34,56,78,9,23]
for i in nums:
    if i % 2 ==0:
        print(i)

# 打印nums中所有的偶数
for i in nums:
    if i % 2 ==0:
        print(i)
'''
# 方法二: 先获取元素的下标,再根据下标获取元素
for 变量(下标) in range(len(列表)):
    (变量取到的是元素的下标)
'''
for i in range(len(nums)):
    print(i,nums[i])


'''
方法三:
for 下标,元素 in enumerate(列表):
    同时获取列表元素和下标
'''
for index,item in enumerate(nums):
    print(index,item)

列表的增删改

  1. 增 - 添加元素
    1. 列表.append(元素) - 在指定列表的最后添加指定元素
nums = [20,30]
print(nums)

nums.append(100)
print(nums)

nums.append('你好')
print(nums)
    1. 列表.insert(下标,元素) - 在指定下标对应的元素前插入指定元素
nums.insert(1,11)
print(nums)
  1. 删- 删除列表元素
# 1) del 列表[下标] - 删除列表中指定下标对应的元素
# 2) 列表.remove() - 删除列表中指定元素(如果元素不存在会报错,如果元素有多个,只删除第一个出现的那一个)
# 3)
# 列表.pop() - 取出列表最后一个元素
# 列表.pop() - 取出列表中指定下标对应的元素
  1. 改 - 修改元素的值
# 列表[下标] = 新元素
nums=[11,23,23,222,123,234]
nums[1] = 112
print(nums)

列表相关操作和相关函数

  1. 列表相关操作
# 1)数学预算符: +,*
# 列表1+列表2  -  将两个列表合并成一个新的列表
list1 = [10,20,30]
list2 = [1,2,3]
resul = list1 + list2
print(resul)

# 2) 列表*N, N*列表   -  将列表中的元素重复N产生一个新的列表
# 10*3 == 10 +10 + 10 --> [1,2,3] + [1,2,3] --> [1,2,3,1,2,3]

# 2)比较运算:>,<,>=,<=,==,!=
# a, 比较相等: ==, !=
print(list1 == [10,20,30])
print(list1 == [10,30,20])

# b, 比较大小:>,<,>=,<=
# 两个列表比较大小,比较的是第一对不相等的元素的大小
list1 = [10,20,30]
list2 = [1,1000,30000,112345]
print(list1>list2)  # True --比较的是第一对不相同的元素

list1 = [1,2,3]
list2 = [1,2,3,4]
print(list2>list1)  # True -- 有比没有大

list1 = [1,2,3]
list2 = [1,'abc',2,3]
#  -- 字符串与数字不能作比较,不然会报错

#3)in 和 not in
# 元素 in 列表 - 判断指定列表中是否存在指定列表
# 元素 not in 列表 - 判断指定列表中是否不存在指定元素
print(10 in [10,20,30])  # True
print(100 not in [1,2,3]) # True
print([1,2] in [1,2,3]) # False  --[1,2]作为元素,不在[1,2,3]中
  1. 相关函数(系统函数): sum,max,min,len,sorted,list
# 1) sum(列表)  -  求列表中所有元素的和(列表必须是数字列表)
score = [1,2,3]
print(sum(score))

# 2) max(列表)/min(列表) - 求列表中所有元素的最大值/最小值
print(max(score))
print(min(score))


# 3) sorted(列表)  -  将列表中的元素从小到大排序,产生一个新的列表
# sorted(列表,reverse = True)  - 从大到小排序
score = [12,122,223,14,56,757,121,22,3,4,6,125]
print(sorted(score, reverse=False))
print(sorted(score, reverse=True))

# 4)list  - 将其他数据转换成列表
# list(数据) - 将指定数据转换成列表。(只有序列可以转换成列表)

列表相关方法

方法使用的套路:列表.xxx()
列表.append(),列表.remove(),列表.insert,列表.pop()

  1. clear
# 列表.clear() - 清空列表
nums = [10,89,70]
nums.clear()
print(nums)
  1. copy
# 列表.copy() - 复制指定列表产生一个一样的新列表,将新的列表返回
# 列表[:] ,列表*1, 列表+[] 的功能和 列表.copy() 的功能一样
nums = [1.2,1,2,3]
nums2 = nums.copy()
print(nums2)

a=[10,20,22]
# 直接用一个变量给另一个变量赋值,赋的是地址,赋值后会导致两个变量同时指向一个内存区域
b = a
c = a.copy()
print(b)
print(c)

a.append(100)
print(b)
print(c)

列表[:] ,列表*1, 列表+[] 的功能和 列表.copy() 的功能一样

nums = [1,2,3]
num1 = nums+[]
num2 = nums*1
num3 = nums[:]
nums.append(123)
print(num1)
print(num2)
print(num3)
print(nums)
  1. count
# 列表.count(元素)  -  统计列表中指定元素的个数
nums = [23,21,43,56,65,23]
resul = nums.count(23)
print(resul)

print(nums.count(100))

列表推导式 - 创建列表的表达式,主要用于对元素进行变换和筛选

结构1:
[表达式 for 变量 in 序列]
 - 创建一个列表(让变量去序列中取值,一个一个的取,取一个值就计算一次表达式的结果作为列表的元素)
作用: 将原序列中的元素按照指定规则(表达式)进行统一变换得到一个列表

结构2:
[表达式 for 变量 in 序列 if 条件语句]
原理:让变量去序列中取值,一个一个的取,取一个值就判断依次条件语句是否成立,如果成立才计算表达式的结果,并且将结果作为列表的元素
作用:提取序列中满足条件的元素
resul = [1 for i in range(5)]
resul2 = [i for i in range(5)]
print(resul)
print(resul2)


nums = [28,10,81,301,22]

# 练习1: 将nums所有的元素乘2,转化成一个新的列表
print([i*2 for i in nums])

# 练习2:[8,0,1,1,2]
print([i % 10 for i in nums] )

# 练习3:[10,1,9,4,4]
print([i//100+i%10+i//10%10 for i in nums])
print([sum(int(y) for y in str(i)) for i in nums])

# 练习4: [True,True,False,False,True]
print([i%2==0 for i in nums])

# 练习5:[81,301]
print([i for i in nums if i %2])

list1 = [10,'ass',20,'aaa']
# 练习6:得到10,20
print([i for i in list1 if type(i)==int])

# 练习7:已知一个分数列表,提取列表中所有及格分数(删除不及格)
scores = [18, 89, 67, 90, 45, 34, 12, 89]
# [89, 67, 90, 89]
print([i for i in scores if i >=60])

元组

  1. 认识元组(tuple)
# 是容器: 将()作为容器的标志里面多个元素用逗号隔开:(元素,元素,元素...)
# 不可变的(不支持增删改):有序的
# 空元组
t1 = tuple()
t2 = ()
print(type(t1))
print(type(t2))

# 单个元素的元组 - 必须在唯一的元素后加逗号
t3 = (1,)
t4 =(2)
print(type(t3),type(t4))
  1. 元组就是不可变的列表
# 列表中和增删改无关的操作,元组支持
# 1)
names = ['a','b','c','d']
print(names[1],names[-1])
print(names[1:-1:-1])
print(names[1:-1:-2])
print(names[2:])

# 2) 支持相关操作: +,*,比较运算,in/not in

# 3) 支持相关函数操作:sum,max,min,len,sorted

# 3) 支持部分方法:count,index
  1. 元组不只是不可变的列表
# 1) 单个元素的元组: (元素,)
# 2) 在没有歧义的情况下,元组的()可以省略
t1 = (1,2,3)
t2 = 1,2,3
print(t1,t2)
# 3) 获取元素的时候,可以让变量的个数和元组中元素个数一致
t1 = (1,2,3)
x,y,z = t1
print(x,y,z)

x,*y = t1
print(x,y)

*x,y = t1
print(x,y)

t1=1,2,3,4
x,*y,z=t1
print(x,y,z)

标签:总结,10,下标,nums,day6,day7,元素,列表,print
来源: https://blog.csdn.net/qq_67036274/article/details/123073805

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有