day5-列表作业_

1.已知一个数字列表,求列表中心元素。

num_list = [1,2,3,4,5,6,7,8,9,10]
num_len = len(num_list)
if num_len % 2: # 判断列表长度是否为奇数
    print(num_list[num_len//2]) # 奇数长度的列表,中心元素只有一个,下标为:列表长度 // 2 
else:
    print(num_list[num_len//2-1],num_list[num_len//2])

2.已知一个数字列表,求所有元素和。

num = [1,2,3,4,5]
sum1=0
for item in num:
    sum1 +=item
print("和为:",sum1)

3.已知一个数字列表,输出所有奇数下标元素。

num = [1,2,3,4,5]
for i in range(len(num)):
    if i % 2:
        print(i,num[i])

4.已知一个数字列表,输出所有元素中,值为奇数的元素。

num = [1,2,3,4,5]
for i in range(len(num)):
    s=num[i]
    if s % 2:
        print(s)

5.已知一个数字列表,将所有元素乘二。

例如:nums = [1, 2, 3, 4] —> nums = [2, 4, 6, 8]

nums = [1,2,3,4]
for x in range(len(nums)):
    nums[x]*=2
print(nums)

6.有一个长度是10的列表,数组内有10个人名,要求去掉重复的

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

# 方法一  从前往后,很呆
names =['张三','李四', '大黄', '大黄', '张三', '张三', '张三','张三', '李四', '大黄','李四']
i=0 # 定义 i 来确定初始元素位置
for item in names:
    j=0 # 重新遍历列表 来进行 比较
    for x in range(len(names)):
        if names[j] == item and i != j:  # 当下标不相等时才删除,一遍又一遍的遍历直到把后面相同的删除
            del names[j]
        else:
            j+=1  # 只有不执行删除操作时 被比较的下标才会增加
    i+=1
print(names)
# 方法二 在内层循环比较过程中,从后往前循环 ,代码更简洁
names =['张三','李四', '大黄', '大黄', '张三', '张三', '张三','张三', '李四', '大黄','李四']
for i in range(len(names)):
    for j in range(len(names)-1,i,-1): 
        # 反着取一组下标,从列表末尾 -> 被比较元素后一个元素下标,方便从后往前遍历列表,而且每次下标自动减1,不会越界
        if names[j]==names[i]: # 发现相同的元素,就删除掉
            del names[j]
print(names)

7.用一个列表来保存一个节目的所有分数,求平均分数(去掉一个最高分,去掉一个最低分,求最后得分)

# 方法一 :先冒泡排序,然后切片
ores = [90, 87, 30, 67, 63, 89, 2, 34, 45,100]
sum1 = 0
# 冒泡排序
for i in range(len(scores)):
    for j in range(i+1,len(scores)):
        a=scores[i]
        b=scores[j]
        if a<b:
            scores[i],scores[j] = b,a
 # [100,90,89,87,67,63,45,34,30,2] 排序结束,方便切片
scores = scores[1:-1] 
# print(scores)
for item in scores:
    sum1 += item
# print(sum1)
print("平均分:",sum1 / len(scores))

# 方法二 :求出最大值和最小值,删除一个最大值和一个最小值,省时
scores = [90, 87, 30, 67, 63, 89, 2, 34, 45,100]
sum1 = 0
max_num = scores[0]
min_num = scores[0]
for item in scores:
    if item > max_num:
        max_num = item
    if item < min_num:
        min_num = item
    sum1 += item
sum1 = sum1 - max_num - min_num
scores.remove(max_num)
scores.remove(min_num)
# print(scores)
print("平均分:",sum1 / len(scores))

8.有两个列表A和B,使用列表C来获取两个列表中公共的元素

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

list_a = [1, 'a', 4, 90, 'a', 1, 1, 'a', 8]
list_b = ['a', 8, 'j', 1, 'a', 1, 1, 1, 'a', 8, 8]
list_c = []
for i in list_a:
    sum1 =0 #相等的次数,大于1不添加到列表C,防止重复添加
    index = 0 # 定位与列表A中的元素下标,进行删除,直到列表B中没有该元素
    for j in range(len(list_b)):
        if list_b[index] == i:
            sum1 += 1
            del list_b[index]
            if sum1 == 1:
                list_c.append(i)
        else: # 只有没有删除元素的情况下,下标才会增加,去比较下一个元素
            index += 1
print(list_c)

# 从后往前删除还是好写一点
a = [1, 'a', 4, 90, 'a', 1, 1, 'a', 8]
b = ['a', 8, 'j', 1, 'a', 1, 1, 1, 'a', 8, 8]
c = []
for i in range(len(a)):
    count = 0
    for j in range(len(b) - 1,- 1, -1):
        if b[j] == a[i]:
            count+=1
            del b[j]
            if count == 1:
                c.append(a[i])
print(c)

9.有一个数字列表,获取这个列表中的最大值.(注意: 不能使用max函数)

例如: nums = [19, 89, 90, 600, 1] —> 600

nums = [19, 89, 90, 600, 1]
max1=nums[0]
for i in range(1,len(nums)):
    s=nums[i]
    if s>max1:
        max1 =s
print(max1)
上一篇:【Beta】Scrum meeting2


下一篇:一文带你全面解析postman工具的使用(基础篇)