day 6 note 列表相关应用 和 元组

day 6 note 列表相关应用 和 元组

01. 列表相关操作

**1.数学运算: +, ***

  1. 列表1 + 列表2 - 将两个列表合并成一个新的列表
list1 = [1, 2, 3]
list2 = [100, 200]
print(list1 + list2)    # [1, 2, 3, 100, 200]

2)列表N * N列表 - 列表中的元素重复 N 次产生一个新的列表(N是>=0的整数)

list3 = list1 * 3      
print(list 3)          # [1,2,3, 1,2,3, 1,2,3]

2.比较运算符

1)比较是否相等: ==, !=

print([1, 2, 3] == [1, 2, 3])   # True
print([1, 2, 3] == [1, 3, 2])   # False

补充:is 的用法

数据1 is 数据2 - 判断两个数据是否相等(判断数据的地址)

数据1 == 数据2 - 判断两个数据是否相等(判断数据的值)

注意:如果给不同的变量赋相同的可变值,地址不一样; 赋相同不可变的值地址相同

list1 = [1, 2, 3]
list2 = [1, 2, 3]
list3 = list1
print(list1 == list2)    # True
print(list1 is list2)    # False
print(list1 is list3)    # True

字典可变

a = {'name': 100}
b = {'name': 100}
print({'name': 100} == {'name': 100})    # True
print(a is b)   # False

元组不可变

x = (10, 20)
y = (10, 20)
print(x is y)    # True

数字和字符串不可变

m = 100
n = 100
print(m is n)   # False

m = 'abc'
n = 'abc'
print(m is n)    # False
  1. 比较大小: >, <, >=, <=

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

print ([1, 2, 3, 4, 5, 6] > [ 10, 0, 0, 0, 0]) # False

3. in 和 not in

元素 in 列表 - 判断列表中是否有指定的元素

print(10 in [100, 200])    # False
print(100 in [100, 200])   # True
print([1, 2] in [1, 2, 3])   # False
print([1, 2] in [10, 20, [1, 2]])    # True

练习1:有两个列表A和B,使用列表C来获取两个列表中公共的元素

例如: A = [1, ‘a’, 4, 90] B = [‘a’, 8, ‘j’, 1] --> C = [1, ‘a’]

A = [1, 'a', 4, 90]
B = ['a', 8, 'j', 1]
C = []
for x in A:
    if x in B:
        C.append(x)
print(C)

练习2:有一个长度是10的列表,数组内有10个人名,要求去掉重复的

例如:names = [‘张三’, ‘李四’, ‘大黄’, ‘张三’] -> names = [‘张三’, ‘李四’, ‘大黄’]

names = ['张三', '李四', '大黄', '张三', '张三', '张三', '大黄', '王五']
new_names = []
for x in names:
    if x not in new_names:
        new_names.append(x)
print(new_names)

4.相关函数

sum、max、min、sorted、len、list

1)sum(序列) - 求序列中所有元素的和;要求序列中的元素必须是数字

scores = [90, 89, 78, 56, 77.9, 81]
print(sum(scores))

2)max(序列) - 获取序中最大的元素; 序列中的元素支持比较运算并且类型一致

print(max(scores))      # 90

print(min(scores))

sorted(序列) - 将序列中的元素从小到大排序,返回排序之后的新列表

new_scores = sorted(scores)
print(scores)    # 不会修改原列表
print(new_scores)   # [56, 77.9, 78, 81, 89, 90]

sorted(序列, reverse=True) - 序列中的元素从大到小排序,返回排序之后的新列表

scores = [90, 89, 78, 56, 77.9, 81]
new_scores = sorted(scores, reverse=True)
print(new_scores)    # [90, 89, 81, 78, 77.9, 56]

4)len(序列) - 获取序列中元素的个数

5)list(数据) - 将数据转换成列表;

所有的序列都可以转换成列表; 将序列中的元素作为列表的元素

print(list('abc'))    # ['a', 'b', 'c']
print(list(range(4)))  # [0, 1, 2, 3]

02. 列表相关方法

1. 列表.clear() – 清空列表(删除列表中所有的元素)

nums = [10, 2, 100]
nums.clear()
print(nums)    # []

2. 列表.copy() - 复制原列表产生一个相同的新列表(数据相同,地址不同);浅拷贝

nums = [1, 2, 'abc']
new_nums = nums.copy()
print(new_nums)    # [1, 2, 'abc']
print(nums is new_nums)   # False

id(变量) - 获取变量中保存的地址(获取变量中保存的数据的地址)

print(id(nums), id(new_nums))

直接赋值和拷贝

list1 = [1, 2, 3]
list2 = list1      # 直接赋值
print(list2)   # [1, 2, 3]
list3 = list1.copy()    # 拷贝  list1[:]、list1*1、 list1+[]
print(list3)    # [1, 2, 3]

list1.append(100)
print(list2)      # [1, 2, 3, 100]
print(list3)    # [1, 2, 3]

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

scores = [90, 89, 89, 70, 100, 100, 23, 100, 89, 89]
print(scores.count(100))

练习:获取列表中元素出现最多的次数

max_count = 0
for x in scores:
    count = scores.count(x)
    if count > max_count:
        max_count = count
print(max_count)

4. 列表.extend(序列) - 将序列中所有的元素都添加到列表中

nums = [1, 2]
nums.extend('abc')
print(nums)    # [1, 2, 'a', 'b', 'c']

nums.extend([10, 20, 30])
print(nums)    # [1, 2, 'a', 'b', 'c', 10, 20, 30]

nums = [1, 2]
nums.append('abc')
print(nums)    # [1, 2, 'abc']

nums.append([10, 20, 30])
print(nums)    # [1, 2, 'abc', [10, 20, 30]]

5. 列表.index(元素) - 获取指定元素在列表中下标(0 ~ 长度-1)

如果元素有多个,只返回第一个的下标(获取第一次出现的位置)

如果元素不存在,会报错

song = ['晴天', '大不了重头再来', '只因你太美', '成都', '晴天', '阳光总在风雨后']
print(song.index('只因你太美'))   # 2

print(song.index('晴天'))        # 0

print(song.index('偏爱'))        # ValueError: '偏爱' is not in list

6. 列表.reverse() - 将列表倒序

song = [‘晴天’, ‘大不了重头再来’, ‘只因你太美’, ‘成都’, ‘晴天’, ‘阳光总在风雨后’]

song.reverse()
print(song)

7. 列表.sort() - 将列表中的元素从小到大排序(不会产生新的列表,直接修改原列表中元素的顺序)

列表.sort(reverse=True) - 将列表中的元素**从大到小排序(**不会产生新的列表,直接修改原列表中元素的顺序)

nums = [23, 99, 3, 56, 7, 23, 45]
nums.sort()
print(nums)    # [3, 7, 23, 23, 45, 56, 99]

nums = [23, 99, 3, 56, 7, 23, 45]
nums.sort(reverse=True)
print(nums)   # [99, 56, 45, 23, 23, 7, 3]

nums = [10, 20, 30, 10, 20, 40]
print(len(nums))    # 6
print(nums.count(20))   # 2
print(nums.index(30))  # 2

03. 列表的推导式

1.什么是列表推导式 - 用来快速产生一个列表的表达式

1)基本语法:

[表达式 for 变量 in 序列]

产生元素的原理:让变量去序列取值,一个一个的取每取一个值就将表达式的结果作为列表的一个元素
a = [ ]
for 变量 in 序列:
a.append(表达式)
返回 a
“”"

list1 = [1 for x in range(4)]   # [1, 1, 1, 1]

list2 = [x for x in range(4)]   # [0, 1, 2, 3]

list3 = [x**2 for x in range(4)]    # [0, 1, 4, 9]

list4 = [x+y for x, y in enumerate([10, 20, 30])]    # [10, 21, 32]

2)带条件语句的推导式

“”"
语法:
[表达式 for 变量 in 序列 if 条件语句]

相当于:
a = [ ]
for 变量 in 序列:
if 条件语句:
a.append(表达式)
返回a
“”"
l

list5 = [x for x in range(10, 20) if x % 3 == 0]  # [12, 15, 18]
print(list5)
list6 = [x for x in range(10, 20) if x % 2]
print(list6)   # [11, 13, 15, 17, 19]

练习1:删除列表中分数低于60的成绩(筛选)

scores = [10, 89, 78, 56, 45, 30, 99, 89, 76]
new_scores = [x for x in scores if x >= 60]
print(new_scores)   # [89, 78, 99, 89, 76]

练习2:将列表中所有的元素乘以2(变形)

nums = [2, 5, 9, 20]
new_nums = [x*2 for x in nums]
print(new_nums)    # [4, 10, 18, 40]

04. 元组

1.什么是元组(tuple)

**概念:**元组是容器型数据类型;将()作为容器的标志,多个元素用逗号隔开: (元素1, 元素2, 元素3,…)

元组元素的要求 和列表一样

不可变 (不支持增删改) ; 有序的 (支持下标操作)

t1 = (10, 20, 'abc')     t2 = (1, 2)

print((1,2,3) == (1,2,3))   # True
print(t1[1])                #  20
t3 = t1 + t2                # (10, 20, 'abc', 1, 2)
print(type(t1))             # 提取类型
      

2.列表中适用于元组的操作

1)列表的查操作 元组都支持

2)列表的相关操作全部适用于元组(数学运算、比

较运算、in和not in、相关函数)

3.元组特有的内容

1)单个元素的元组 - - 唯一的那个元素后面必须加逗号

list1 = [10]
print(type(list1))

tuple1 = (10)
print(type(tuple1), tuple1)    # <class 'int'> 10

tuple2 = (10,)
print(type(tuple2), tuple2)     # <class 'tuple'> (10,)

2)元组的括号在没有歧义的情况下可以省略(多个数据直接用逗号隔开表示的也是一个元组)

t3 = 10, 23, 89
print(type(t3), t3)    # <class 'tuple'> (10, 23, 89)

3)用多个变量分别获取元组中元素的值(也适用于列表)

t4 = (18, '余婷', '女')

a.通过下标获取元素

print(t4[1], t4[1:])   # 余婷 ('余婷', '女')

b.让变量的个数和元组中元素的个数保持一致

x, y, z = t4
print(x, y, z)      # 18 余婷 女

x, y = 10, 20

c.让变量的个数小于元组中元素的个数,但是必须有一个变量带 * 号

t4 = (18, '余婷', '女', 90, 80)
x, y, *z = t4
print(x, y, z)    #  18 余婷 ['女', 90, 80]

x, *y, z = t4
print(x, z, y)   #  18 80 ['余婷', '女', 90]

*a, b, c, d = t4
print(b, c, d, a)   # 女 90 80 [18, '余婷']

m, *n = t4
print(m, n)   # 18 ['余婷', '女', 90, 80]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值