day 05

部分作业解析
# 1.已知一个数字列表,求列表中心元素。 奇数个元素,中心为1个,偶数个元素,中心元素为2个
list1 =[1, 89, 34, 24, 16, 78]
if (len(list1)) % 2 != 0 #长度为奇数的情况
	print(list1[len(list1) // 2])  # 输出中间那一个值,利用下标找出来
else:
    print(list1[len(list1) // 2 -1 ],list1[len(list1)//2])  #输出中间2个值
# 运行结果 :34 24

# 2.已知一个数字列表,求所有元素和。
list1 = [1, 89, 34, 24, 16, 78]
print(sum(list1))
# 运行结果:242

# 3.已知一个数字列表,输出所有奇数下标元素。
list1 = [1, 89, 34, 24, 16, 78]
for i in range(1,len(list1),2)  #从第一个奇数开始,每间隔2个下标取值
	print(list1[i])
# 运行结果:89 24 78

# 4.已知一个数字列表,将所有元素乘二。
list1 = [1, 89, 34, 24, 16, 78]
for i in range(len(list1)):
    list1[i] *= 2
print(list1)
# 运行结果:[2, 178, 68, 48, 32, 156]

# 5.用一个列表来保存一个节目的所有分数,求平均分数(去掉一个最高分,去掉一个最低分,求最后得分)
list1 = [10, 99, 20, 45, 78, 98, 95]
list1.remove(max(list1))  # 删除最大值
list1.remove(min(list1))  # 删除最小值
num=sum(list1)/len(list1)  #求平均分
print(num)
# 运行结果:67.2

# 6.有两个列表A和B,使用列表C来获取两个列表中公共的元素
A = [1, 'a', 4, 90]  
B = ['a', 8, 'j', 1]
C = []
for i in A:
	for j in B:
        if i === j:
            C.append(i)
print(C)
# 运行结果:[1, 'a']
列表的运算
# 1.列表的重复
list1 =[1,2,3,4] 
print(list1 * 2)
# 运行结果:[1, 2, 3, 4, 1, 2, 3, 4]
# 2.列表的拼接
list2 =[3,4,5,6] 
print(list2 + list1)
# 运行结果:[3, 4, 5, 6, 1, 2, 3, 4]
# 3.成员运算: in、 not in 运算结果为布尔值
print(3 in [1, 3, 4])
print([3] in [1, 3, 4])
print([3] in [1, 3, 4,[3]])
# 运行结果:True False True
# 4.比较大小
# a.同类型元素比较
# b.比较的是第一对不相等的元素大小(容器)
# c.数字正常比较大小
列表的方法和函数

max、min ->获取同类型数据中的最大、最小值

num =[1,2,3,4]
pritn(max(num))
pritn(min(num))
# 运行结果:4 1

count -统计某个元素出现个数,list.count()

num =[1,2,3,4]
print(num.count(4))
# 运行结果:1

sum-求和 sum()

num =[1,2,3,4]
print(sum(num))
# 运行结果:10

reverse - 将列表倒序,返回值为None,直接修改列表本身

list.reverse()

num =[1,2,3,4]
print(num.reverse())
print(num)
# 运行结果:None
# 运行结果:[4, 3, 2, 1]

sorted :将列表从小到大排序,生成新列表

sorted(列表,reverse=False) ->从小到大排序

reverse= True -> 从大到小排序

sort :将列表从小到大排序,修改原列表

list.sort(reverse= False),从小到大排序

list.sort(reverse=True),从大到小排序

num1 =[23,14,56,34]
print(sorted(num1))
print(sorted(num1,reverse=True))
print(num1)
'''
运行结果:
[14, 23, 34, 56]
[56, 34, 23, 14]
[23, 14, 56, 34]
'''

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

list.extend()

index -查找元素

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

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

num1 =[23,14,56,34]
index1=num1.index(14)
print(index1)
# 运行结果:1
# list(index('a',n)) ,从指定下标位置处,开始查找
#练习:不使用index(),查找第二个a的下标
list = [1, 2, 'a', 4, 'a']
num = 0
for i in range(len(list)):
    if list[i] == 'a':
         num += 1
         if num == 2:
             print(i)
             break
# 运行结果:4
列表去重
# 有一个列表,要求去掉重复的人名
# 例如:names = ['张三', '李四', '大黄', '张三','张三'] -> names = ['张三', '李四', '大黄']
# 方法一:list.count(list[i])
names = ['张三', '李四', '大黄', '张三','张三']
name_list =[]
for i in names:
    if i not in name_list:
        name_list.append(i) # 利用空列表,添加新的元素进入
print(name_list)
# 方法二:倒序取值,利用元素出现的次数
names = ['张三', '李四', '大黄', '张三','张三']
for i in range(len(names)-1,-1,-1):
    if names.count(names[i])>1:
        del names[i]
print(names)
# 方法三:查找元素,计算出现次数
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)] # 生成一个1-100的列表
num_2 =[1 for _ in range(10)]  # 把1循环10次

append()适用于所有向列表追加元素的操作

列表推导式在某些情况下可以替代append()

语法二:[表达式 for 变量 in 容器 if 条件 ]

for循环执行一次,if分支判断一次,条件成立时表达式执行,向列表中添加元素

list3=[i for i in range(1,101) if i % 2 ==0] #向列表添加1-100中偶数

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

# 练习:孪生数:两个素数的差等于2,找出100以内所有的孪生数
new_list=[]
for i in range(2,101): 
    if i ==2:
        print(i)
        new_list.append(2)
    else:
        for j in range(2,i):
            if i % j ==0:
                break
        else:
            print(i)
            new_list.append(i)  #添加一个素数的新列表
print(new_list)  
for x in range(len(new_list)-1):
    if new_list[x+1]-new_list[x] == 2:
        print(f'{new_list[x]}{new_list[x+1]}是孪生数')
'''
运行结果:
3和5是孪生数
5和7是孪生数
11和13是孪生数
17和19是孪生数
29和31是孪生数
41和43是孪生数
59和61是孪生数
71和73是孪生数

'''
随机模块

import random

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

randrenge( ) ->约等于randint+range

# randint(a,b) ->从[a,b]闭区间随机获取一个整数。
# randrange() -> 约等于randint + range
print(random.randrange(1, 4, 2))
# choice() ->从容器中获取一个元素
print(random.choice([1, 2, 3, 4]))
# choices() ->从容器中获取K个元素,有放回的抽取元素
print(random.choices([1, 2, 3, 4, 5], k=3))
# sample() ->从有序容器中无放回的抽取K个元素,不能超过容器个数
print(random.sample([1, 2, 3, 4, 5], k=3))
# shffule() ->将有序容器随机打乱顺序,没有返回值,修改序列本身
list1 = [1, 2, 3, 4, 5]
print(random.shuffle(list1))
print(list1)
#练习:抽奖 
names = ['猩猩', '飞飞', '大哥', '飘飘''王总']
random.shuffle(names)  #打乱列表
# 设置内幕
while True:
    result = random.choices(names, k=1)
    if result == ['王总']:
        break
print(result) 

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值