python第二周day1

python 基础知识第2周day1(9.22)

大概内容:

  • 列表

  • 元组,字典,集合,字符串

1、列表的相关操作

1.数学运算符 :+ 、*
“”"
1)列表 1+列表 2:将两个列表中的元素合并产生一个新的列表
例如:[x,y,z]+[m,n]–>[x,y,z,m,n]

  1. 列表 * N/N *列表:列表中的元素重复N次产生一个新的列表

“”"

nums1 = [1, 2, 3]
nums2 = [4, 5]
print(nums1+nums2)  # [1, 2, 3, 4, 5]
print(nums1+nums1)   # [1, 2, 3, 1, 2, 3]
print(nums1*2)      # [1, 2, 3, 1, 2, 3]
print(nums2*4)      # [4, 5, 4, 5, 4, 5, 4, 5]
print(nums2*0)   # []

2.比较运算符:,!=,>,<,>=,<=
“”"
1)
,!=
2)>,<,>=,<= - 比较的是第一对不相等的元素的大小。(从前往后相同位置上的元素为一对。相等应的是一对)
列表1 > 列表2

“”"

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

print([1, 2, 34, 56] > [4, 3]) # False 1<4
print([1, 100, 1000] > [1, 200, 0]) # 1=1,比较100<200,False
# print([1,2]>2) # 报错

3.in 和 not in
“”"
元素 in 列表 - 判断列表中是否存在指定元素
元素 not in 列表 - 判断列表中是否不存在指定元素
“”"

print(10 in [10, 11, 23])  # True
print(100 in [12, 13, 10])  # False
print([10, 20] in [10, 20, 30]) # False,判断列表是否在列表里面
print([10, 20] in [[10, 20], 30]) # True
# 练习1:有两个列表A和B,使用列表C来获取两个列表中公共的元素(删除,重新创建)
A = [1, 'a', 4, 90, 1]
B = ['a', 8, 'j', 1]
C = []
for x in A:
    if x in B and x not in C:
        C.append(x)
print(C)
# for i in A:
#     for j in B:
#         if i == j and i not in C:
#             C.append(i)
# print(C)     # [1, 'a']
# 练习2:有一个长度是10的列表,数组内有10个人名,要求去掉重复的
names = ['张三', '李四', '大黄', '大黄', '张三', '张三', '张三']
new_names = []
for name in names:
    if name not in new_names:
        new_names.append(name)
print(new_names)  # ['张三', '李四', '大黄']
# 练习3:提取分数列表中90分以上的成绩
scores = [90, 89, 23, 67, 99, 96, 56, 78, 91, 45]
new_scores = []
for score in scores:
    if score > 90:
        new_scores.append(score)
print(new_scores)  # [99, 96, 91]
# 练习4:删除分数列表中不及格的分数
scores = [90, 89, 23, 67, 99, 96, 56, 78, 91, 45]
for score in scores:
    if score < 60:
        scores.remove(score) # 注意删除语句
print(scores) # [90, 89, 67, 99, 96, 78, 91]
# 提取及格的元素
scores = [90, 89, 23, 67, 99, 96, 56, 78, 91, 45]
new_scores = []
for score in scores:
    if score >= 60:
        new_scores.append(score)
print(new_scores)  # [90, 89, 67, 99, 96, 78, 91]

2、列表相关函数

  1. max 和 min
    “”"
    max(序列) - 获取序列中元素的最大值
    min(序列) - 获取序列中元素的最小值

注意:序列中的元素之间必须支持比较大小的操作
“”"

nums = [78, 23, -9, 34, 89, 54]
print(max(nums))
print(min(nums))

2.最大值,最小值的套路
最大值

nums = [78, 23, -9, 34, 89, 54]
max1 = nums[0]
for x in nums[1:]:
    if x > max1:
        max1 = x
print(max1)    # 89

最小值

min1 = nums[0]
for x in nums[1:]:
    if x < min1:
        min1 = x
print(min1)  # -9

3.sum - 求数字和

“”"
sum(数学序列) - 计算序列中所有元素的和
“”"

nums = [78, 23, -9, 34, 89, 54]
print(sum(nums))  # 269

4.sorted (排序)
“”"
sorted(序列) - 将序列中的元素从小到大(升序)排序,产生一个新的列表
sorted(序列,reverse=True) - 将序列中的元素从大到小(降序)排序,产生一个新的列表
“”"

《流畅的Python》

nums = [78, 23, -9, 34, 89, 54]
new_nums = sorted(nums)
print(new_nums)  # [-9, 23, 34, 54, 78, 89]

nums = {78, 23, -9, 34, 89, 54}
new_nums = sorted(nums)
print(sorted(nums)) #无序集合--》有序列表 [-9, 23, 34, 54, 78, 89]
new_nums = sorted(nums,reverse=True)
print(new_nums)  # [89, 78, 54, 34, 23, -9]

5.reversed - 倒序
new_nums = reversed(nums)

5.len - 统计元素个数

“”"
len(序列) - 统计序列中元素的个数
“”"

print(len(nums))  # 6
print(len('abc')) # 3

6.list
“”"
list(数据) - 将指定的数据转换成列表(所有的序列可以转换成列表;是将序列中的元素作为列表的元素)
“”"

print(list('abc123')) # 字符串 ['a', 'b', 'c', '1', '2', '3']
print(list(range(3))) # range [0, 1, 2]
print(list([3, 2, 1]))

7.enumerate 枚举
“”"
[10,20,30]–>[(0,10),(1,20),(2,30)]
for 变量1,变量2 in enumerate(列表):
变量1是每个元素的下标
变量2是每个元素
“”"

nums = [78, 23, -9, 34, 89, 54]
for index, item in enumerate(nums):
    print(index, item)

seq = [10,20,30]
for x in seq:
    print(x)
seq = [[10,2], [20,2], [30,3]]
for x,y in seq:
    print(x,y)

3、列表相关方法

方法:列表.xxx
list #ctrl 点进去
1…列表.clear() - 清空列表

nums = [20, 99, 78, 'abc']
list.clear(nums)
print(nums) # []

2.列表.copy() - 复制原列表产生一个一模一样的新列表
“”"
如果之间用一个变量给另外一个变量赋值,赋的是地址。赋值后两个变量指向的是同一个数据。
注意:列表[:]、列表*1、列表+1[]的功能和列表.copy()的效果一样
“”"

list1 = [10, 'abc', 100]
list2 = list1.copy()
print(list2)  # [10, 'abc', 100]
list1.append(10000)
print(list1, list2) # [10, 'abc', 100, 10000] [10, 'abc', 100]
print(id(list1), id(list2))

list1 = [10, 'abc', 100]
list2 = list1
print(list2)
list1.append(1000)
list2.append(203)
print(list1, list2)  # [10, 'abc', 100, 1000] [10, 'abc', 100, 1000]
print(id(list1), id(list2)) # 2242849755008 2242849755008

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

nums = [0, 1, 9, 10, 11, 10, 12, 11, 10]
print(nums.count(10)) # 3
print(nums.count(100)) # 0

4.列表.extend(序列) - 将序列中的元素全部添加到列表中

nums = [100, 200]
scores = [90, 12, 89, 13, 67]
nums.extend(scores)
print(nums)  # [100, 200, 90, 12, 89, 13, 67]

nums.extend('abc') # 批量添加
print(nums) # [100, 200, 90, 12, 89, 13, 67, 'a', 'b', 'c']
nums.append('abc') # 添加元素
print(nums) # [100, 200, 90, 12, 89, 13, 67, 'a', 'b', 'c', 'abc']

5.列表.index(元素) - 获取元素的下标值(0开始的下标)
注意:如果元素不存在会报错,如果元素有多个返回最前面的那一个元素的下标

nums = [0, 1, 9, 10, 11, 10, 12, 11, 10]
print(nums.index(9)) # 2
# print(nums.index(23)) # ValueError: 23 is not in list
print(nums.index(11)) # 4 取最前面的一个下标
names = ['张三', '李思', '赵二', '赵二']
print(names.index('李思')) # 1
print(names.index('赵二')) # 2

6.列表.reverse() - 将列表中的元素逆序(倒序)

names = ['张三', '李思', '赵二', '赵二']
names.reverse()
print(names) # ['赵二', '赵二', '李思', '张三']

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

nums = [0, 1, 9, 10, 11, 10, 12, 11, 10]
nums.sort()
print(nums) # [0, 1, 9, 10, 10, 10, 11, 11, 12]
nums.sort(reverse=True)
print(nums)  # [12, 11, 11, 10, 10, 10, 9, 1, 0]

4、列表推导式(重要)

1.列表推导式 - 创建列表的快捷方式
“”"
语法1:[将序列中的元素按照统一的规则整体变换]
[表达式 for 变量 in 序列]
相当于:
list1 = []
for 变量 in 序列:
list1.append(表达式)

语法2:(对序列中的元素进行筛选/删除)
[表达式 for 变量 in 序列 if 条件语句]
相当于:
list1 = []
for 变量 in 序列:
if 条件语句:
list1.append(表达式)

“”"

list1 = [10 for x in range(3)]
print(list1) # [10,10,10]

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

list3 = [x*10+2 for x in range(3)]
print(list3)  # [2, 12, 22]
# 练习:将nums中所有的元素乘以10,产生一个新的列表
nums = [12, 33, 7, 9]
new_nums = [x*10 for x in nums]
print(new_nums)   # [120, 330, 70, 90]
nums = [12, 33, 7, 9]
new_nums1 = [x%10 for x in nums]
print(new_nums1) # [2, 3, 7, 9]

nums = [12,33,7,9]
list4 = [x for x in nums if x % 2] #取奇数 TRUE
print(list4)  # [33, 7, 9]
# 练习:利用列表推导式删除scores中小于60的分数
scores = [89, 34, 56, 90, 56, 78, 99]
new_scores = [x for x in scores if x >=60]#x//10 ->8,9,7,9
print(new_scores) # [89, 90, 78, 99]

语法3:
[三目运算符 for 变量 in 序列]

补充:三目运算符
c的三目运算符- ?:
表达式1?值1:值2

Python的三目运算符
值1 if 表达式 else 值2 - 如果表达式的值为True,整个运算的结果是值1,否则是值2
“”"

age = 18
result = '成年' if age >= 18 else '未成年'
print(result) # 成年

# 练习:利用列表推导式将nums中所有的偶数除以2,所有的奇数乘以2
# [10, 17, 66, 3, 30, 14, 10]
nums = [20, 34, 33, 6, 15, 7, 20]
new_nums1 = [x*2 if x % 2 else x//2 for x in nums]
print(new_nums1) # [10, 17, 66, 3, 30, 14, 10]

# 练习:所有的偶数除以2,所有的奇数不变
# [10, 17, 33, 3, 15, 7, 10]
new_nums2 = [x if x % 2 else x//2 for x in nums]
print(new_nums2) #[10, 17, 33, 3, 15, 7, 10]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值