06列表和元组

列表和元组

  • 列表相关操作

1.数学运算:+,*
1)列表1 + 列表2 - 将两个列表合并为一个新的列表

list1 = [1,2,3]
list2 = [4,5,6]
print(list1 + list2)

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

print(list1 * 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]
print(list1 == list2) # True
print(list1 is list2) # False
list3 = list1
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) # True

m = 'abc'
n = 'abc'
print(m is n) # True

2)比较大小:>,<,>=,<=
两个列表比较大小,是比较第一段不相等的元素的大小

print([1, 2, 3, 4, 5, 6] > [10, 20]) # 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 [1, 2, 3, [1, 2]]) # True

有两个列表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)

有一个长度是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, 81]
print(sum(scores))

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

# 3)
# sorted() - 将序列中的元素从小到大排序,返回排序之后的新排列
new_scores = sorted(scores)
print(scores) # 不会修改原列表
print(new_scores)

# sorted(序列,reverse = True) - 将序列中的元素从大到小排序,返回排序之后的新列表
scores = [90,89,78,56,77.9,81]
new_scores = sorted(scores, reverse=True)
print(new_scores)

# 4)len(序列) - 获取序列中元素的个数
# 5)list(数据) - 将数据转换成列表
#               所有的序列都可以转换成列表;将序列中的元素作为列表元素
print(list('abc'))
print(list(range(4)))
  • 列表的相关方法
# 1.列表.clear() - 清空列表(删除列表中的所有元素)
nums = [10, 2, 100]
nums.clear()
print(nums) # []

# 2.列表.copy() - 复制原列表产生一个相同的新列表(数据相同,地址不同)
nums = [1, 2, 'abc']
new_nums = nums.copy()
print(new_nums)
print(new_nums is nums) # False

# id(变量) - 获取变量中保存的数据的地址
print(id(nums), id(new_nums))

list1 = [1, 2, 3]
list2 = list1
print(list2)

list1.append(100)
print(list2)
list3 = list1.copy() # 拷贝 list1[:] list1*1 list1+[]
print(list3)

list1.append(100)
print(list2)
print(list3)

# 3.列表.count(元素) - 统计指定元素在列表中的个数
scores = [90,89,89,70,100,100,23,100]
print(scores.count(100))

# 练习:获取列表中元素出现最多的次数
max_count = 0
for x in scores:
    if scores.count(x) > max_count:
        max_count = scores.count(x)
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

# 6.列表.reverse() - 将列表倒序
song = ['晴天', '大不了从头再来', '只因你太美', '成都', '晴天', '阳光总在风雨后']
song.reverse()
print(song)

# 7.
# 列表.sort() - 将列表中的元素从小到大排序(不会产生新的列表,直接修改原列表中元素的顺序)
# 列表.sort(reverse=True) - 从大到小
nums = [23,99,3,56,7,23,45]
nums.sort()
print(nums)

nums = [23,99,3,56,7,23,45]
nums.sort(reverse=True)
print(nums)
  • 列表推导式

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

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

# 将列表中所有元素乘以2
nums = [2,5,9,20]
new_nums = [x*2 for x in nums]
print(new_nums)

3.双重循环或者多循环

[表达式 for 变量1 in 序列1 for 变量2 in 序列2]

相当于:
a = []
for 变量1 in 序列1:
for 变量2 in 序列2:
a.append(表达式)
返回a

result = [x+y for x in range(3) for y in range(10,13)]
print(result)
  • 元组

1.什么是元组(tuple)

元组是容器型数据类型;将()作为容器的标志,多个元素用逗号隔开:(元素1,元素2,元素3…)
元组元素的要求和列表一样
不可变(不支持增删改);有序的(支持下标操作)

t1 = (10, 20, 'abc')
print(type(t1))

t2 = () # 空元组
print(type(t2)

2.列表中试用于元组的操作
1)列表的查操作元组都支持(自己证明)
2)列表的相关操作全部适用于元组(数学运算、比较运算、in和not in、相关函数)

3.元组特有的内容
1)单个元素的元组 - 唯一的那个元素后面必须加逗号

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

tuple1 = (10)
print(type(tuple1), tuple1)

tuple2 = (10,)
print(type(tuple2), tuple2)

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

tuple3 = 10,23,89
print(type(tuple3), tuple3)

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

tuple4 = (18, 'YT', '女')
# a. 通过下标获取元素
print(tuple4[1], tuple4[1:])

# b.让变量的个数和元组的个数保持一致
x, y, z = tuple4
print(x, y, z)

x, y = 10, 20

# c.
tuple5 = (18, 'YT', '女', 90, 80)
x, y, *z = tuple5
print(x, y, z)
x, *y, z = tuple5 # 18 YT ['女', 90, 80]
print(x, y, z) # 18 ['YT', '女', 90] 80

*a, b, c, d = tuple5
print(a, b, c, d) # [18, 'YT'] 女 90 80
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值