day05

列表的运算

列表的重复

list1 = [1, 2, 3, 4]
print(list1 * 3)	# 将列表list1在一个列表里面重复3次

列表的拼接

list1 = [1, 2, 3, 4]
list2 = [5, 6, 7, 8, 9]
print(list1 + list2)	# 在一个列表里面在list1列表后面添加list2列表里面的元素

成员运算(in,not in)

成员运算的结果是布尔值(True/False)

print(3 in [1, 3, 4])	# True
print([3] in [1, 3, 4])	# False
print([3] in [1, 3, 4, [3]])	# True

比较大小

  1. 必须是同类型的元素比较大小,否则报错
  2. 比较大小比较的是第一对不相等元素的大小
  3. 字符串比较大小参考ASCII码值比较,数字是正常的
list1 = [1, 2, 3, 4]
list2 = [1, 2, 4, 5]
print(list1 < list2)	# True
list3 = ['1', 2, 4, 5]
list4 = [1, 2, 4, 5]
print(list3 < list4)
# 报错:TypeError: '<' not supported between instances of 'str' and 'int'
list5 = [1, 2, 'e', 4]
list6 = [1, 2, 'd', 5]
print(list5 < list6)	# False

列表的方法和函数

max、min

获取同类型数据类型中最大、最小值

num = [1, 2, 3, 4]
print(max(num))	# 4
print(min(num))	# 1

count

统计某个元素出现个数

print(num.count(4))	# 1
print(num.count(5))	# 没有在列表中的元素输出的是0,不是报错

sum

求和

print(sum(num))	# 10

reverse

将列表倒序

print(num.reverse())  # 直接修改原列表,返回值为空(None)
print(num)	# [4, 3, 2, 1]
print(num[::-1])  # 不是修改列表本身 [1, 2, 3, 4]

sorted

sorted(列表,reverse = False)(默认):将列表从小到大排序,生成新的列表

sorted(列表,reverse = True):将列表从大到小排序

num1 = [23, 70, 1, 56, 44]
print(sorted(num1))	# [1, 23, 44, 56, 70]
print(sorted(num1, reverse=True))  # 从大到小排序 [70, 56, 44, 23, 1]
print(num1)

sort

sort(列表,reverse = False)(默认):将列表从小到大排序,修改原列表

sort语法:列表.sort()

print(num1.sort())	# None
print(num1)	# [1, 23, 44, 56, 70]

extend

extend() - 将一个容器中的元素添加到列表中

将容器中的每个元素,分别添加到另一个容器中

num1.extend('abca')
num1.extend([1, 2, 3])
print(num1)	# [1, 23, 44, 56, 70, 'a', 'b', 'c', 'a', 1, 2, 3]

index

从左往右查找,找到元素则立刻停止查找,返回下标

如果查找元素不存在,报错

num1 = [1, 23, 44, 56, 70, 'a', 'b', 'c', 'a', 1, 2, 3]
index_1 = num1.index('a')
index_2 = num1.index('a', 6)
# index_2 = num1.index('u')   # ValueError: 'u' is not in list
print(index_1)	# 5
print(index_2)	# 8

练习:不使用index(),查找第二个a的下标

# 方法一:
m = []
for i in enumerate(num1):
    if i[1] == 'a':
        m.append(i[0])
print(m[1])
# 方法二:
count = 0
for i in range(len(num1)):
    if num1[i] == 'a':
        count += 1
        if count == 2:
            print(i)
            break

练习:有一个列表,要求去掉重复的人名

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

# 方法一
names = ['张三', '李四', '大黄', '张三', '张三']
name = []
name_count = 0
for i in names:
    if i not in name:
        name.append(i)
print(name)
# 方法二
for i in range(len(names) - 1, -1, -1):
    if names.count(names[i]) > 1:
        del names[i]
print(names)
# 方法三
index = 0
while index <= len(names) - 1:
    if names.count(names[index]) > 1:
        del names[index]
    else:
        index += 1
print(names)

列表推导式

作用:生成一个有元素的列表。本质上就是向列表中添加元素

语法一:[表达式 for 变量 in 容器] for 循环每执行一次,表达式就会将其生成的结果添加到列表中。

num = [i for i in range(1, 101)]
print(num)
num_1 = [1 for _ in range(10)]
print(num_1)  # 向列表中添加10次1

append()适用于所有向列表中追加元素的操作,列表推导式在某些情况下可以替代append()

列表推导式的性能高于append()

语法二:[表达式 for 变量 in 容器 if 条件] for循环执行一次,if 分支判断一次,条件成立时表达式执行

list3 = [i for i in range(1, 101) if i % 2 == 0]
print(list3)

语法三:[表达式 for 变量 in容器 for 变量 in 容器]

list4 = [i for _ in range(3) for i in range(1, 11)]
print(list4)  # 将1到10输出3次

练习:孪生数:两个素数的差等于2.找出100以内所有的孪生数。

list_new = []
for i in range(2, 101):
    if i == 2:
        print('2是素数')
        list_new.append(2)
    else:
        for j in range(2, i):
            if i % j == 0:
                print(f'{i}不是素数')
                break
        else:  # 将for循环全部执行一遍才能判断else的内容,就是for--else
            print(f'{i}是素数')
            list_new.append(i)
print(list_new)
for x in range(len(list_new) - 1):
    if list_new[x + 1] - list_new[x] == 2:
        print(f'{list_new[x]}{list_new[x + 1]}是孪生数')

随机模块

random:随机模块。

randint(a,b) -> 从[a,b]闭区间中随机获取一个整数。

print(random.randint(1, 7))

randrange() # 左闭右开区间 -> 等价于randint + range

print(random.randrange(1, 8, 2))  # 随机取这些数1,3,5,7取一个(中间隔step-1个数)

choice() -> 从容器中随机抽取一个数

print(random.choice([1, 2, 3, 4]))  # 从有序列表中随机抽取一个数

choices() -> 从容器中随机获取K个元素,有放回地抽取元素

print(random.choices([1, 2, 3, 4], k=2))	# 这里是以列表的形式输出的 [3, 1](乱序输出)

sample() -> 从有序容器中无放回的抽取K个元素放入列表

print(random.sample([1, 2, 3, 4], k=3))	# [1, 3, 4](乱序输出)

shffule() -> 将有序容器随机打乱顺序,无返回值,修改的是序列本身

list1 = [1, 2, 3, 4, 5]
print(random.shuffle(list1))	# None
print(list1)	# [1, 2, 3, 5, 4]

练习:课堂点名

names = ['张三', '李四', '王五', '大黄']
random.shuffle(names)
result = random.choices(names, k=1)
print(result)	# ['李四']
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值