0
点赞
收藏
分享

微信扫一扫

Chapter 5 列表的相关内容

罗蓁蓁 2022-04-19 阅读 21
python

Chapter 5 列表的相关内容

Statement文章声明:仅作为个人学习笔记,一切失误概不负责。不杠不贬,文明网络环境建设!!

一.列表的相关方法

list1 = ['喜羊羊与灰太狼之框出未来', '斗破苍穹', '可不可以你也刚好喜欢我', '这个杀手不太冷静', '画江湖', '反贪风暴5', '神秘海域', '新蝙蝠侠']
  1. 列表增
  • **list1.append(x)😗*在列表list1末尾追加元素x
list1.append('熊出没')
print(list1)
  • **list1.insert(n, x)😗*在列表list1下标位置n处插入元素x
list1.insert(1, '四海')
print(list1)
  1. 列表修改
  • **list1[n] = x:**将list1下标为n位置的元素重新赋值为x
list1[0] = '熊出没'
print(list1)
  1. 列表查找
  • **list1.index(x, n)😗*在list1中从下标n开始从左向右查找元素x第一次出现位置,返回下标,找不到报 错.n可以省略不写,省略时默认为0
# 不设置查找起始点
print(list1.index('熊出没'))
# 设置查找起点
print(list1.index('熊出没', 1))
  1. 列表元素删除
  • **del list[n]😗*根据下标n删除元素,找不到下标报错(下标超出报错)
del list1[9]
print(list1)
  • **list.pop(n)😗*根据下标n删除元素,找不到下标不报错(下标超出不报错)
list1.pop(0)
print(list1)
  • **list.remove(x)😗*根据内容删除元素,只删除从左到右找到的第一个元素,找不到元素报错
list1.remove('熊出没')
print(list1)
  • **list.clear()😗*清空列表
list1.clear()
print(list1)
  1. 列表计数
  • **list.count(x)😗*计算元素x在列表中出现的次数
list2 = ['abc', '123', 'abc']
num1 = list2.count('abc')
print(num1)
num2 = list2.count('a')
print(num2)
  1. 列表排序
  • **list.sort()😗*默认从小到大排序(默认reverse=False)(该方法涉及比较大小,容器中数据类型需要 一致;整型,浮点型,布尔值可以相互比较)
list3 = [3, 5, 0]
list3.sort()
print(list3)
  • **list.sort(reverse=True)😗*从大到小排序
list3.sort(reverse=True)
print(list3)
  • **list.reverse()😗*反序输出,改变了原列表
list4 = [1, 3, 5, 'anc']
list4.reverse()
print(list4)

二.列表相关办法

三.列表推导式

# 1.列表推导式 创建列表的表达式
'''
结构1:
[表达式 for 变量 in 序列]
功能:创造一个列表
          循环的每个变量代入表达式的结果作为列表的每一个元素
'''
# 练习1:提取nums中所有元素的个位数
nums = [23, 78, 562, 98, 71, 99]
# [3, 8, 2, 8, 1, 9]
print([x % 10 for x in nums])
# 练习2:将nums中所有的元素都乘以10
nums = [23, 78, 562, 98, 71, 99]
# [230, 780, 5620, 980, 710, 990]
print([x * 10 for x in nums])

'''
结构2
[表达式 for 变量 in 序列 if 条件语句]
功能:创造一个列表
          循环的变量如果满足if条件,则代入表达式,结果为列表的元素
          对原数据提取满足新条件的所有元素
'''
print('-------------------------------------结构2-----------------------------------')
# 练习:用推导式删除scores中小于60的元素
scores = [30, 56, 78, 91, 83, 88, 45, 57, 60]
print([x for x in scores if x >= 60])

print('------------------------------------三目运算符----------------------------------')
# python中三目运算符
'''
值1 if 条件语句 else 值2 
值1 if 条件语句 else 值2 for 变量 in 序列
'''
print(['及格' if x >= 60 else '不及格' for x in scores])

day 5列表练习题

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

nums = [12, 65, 46, 75, 62, 99]
# 长度为偶数长度时候
if len(nums) % 2 == 0:
    print(nums[int(len(nums)/2)-1], nums[int(len(nums)/2)])
# 长度为奇数长度时候
else:
    print(nums[int(len(nums) / 2)])

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

nums = [12, 65, 46, 75, 62, 99]
print(sum(nums))

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

nums = [12, 65, 46, 75, 62, 99]
for i in range(len(nums)):
    if nums[i] % 2 == 1:
        print(i)

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

nums = [12, 65, 46, 75, 62, 99]
for i in range(len(nums)):
    if nums[i] % 2 == 1:
        print(nums[i])

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

nums = [1, 2, 3, 4]
new_num = []
for i in nums:
    new_num.append(i * 2)
print(new_num)

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

names = ['张三', '李四', '大黄', '大黄', '张三', '张三', '张三']
names2 = []
for i in names:
    if i not in names2:
        names2.append(i)
print(names2)

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

scores = [12, 65, 46, 75, 62, 99]
# 正向排序
scores2 = sorted(scores)
# 去掉最后一个最大的数字 不影响整体下标
scores2.remove(scores2[len(scores2)-1])
# 去掉第一个最小的数字
scores2.remove(scores2[0])
# 和除以长度个数
print(sum(scores2)/len(scores2))

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

listA = [1, 'a', 4, 90]
listB = ['a', 8, 'j', 1]
listC = []
for x in listA:
    for y in listB:
        if x == y:
            listC.append(x)
print(listC)

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

nums = [19, 89, 90, 600, 1]
# 遍历每个数字 谁大就给max_num赋值  小于就继续遍历
max_num = 0
for i in nums:
    if i > max_num:
        max_num = i
print(max_num)

10.*获取列表中出现次数最多的元素

nums = [1, 2, 3, 1, 4, 2, 1, 3, 7, 3, 3]
nums_count = []
for i in nums:
    nums_count.append(nums.count(i))
# nums_count = [3, 2, 4, 3, 1, 2, 3, 4, 1, 4, 4]  对应的
# 最大次数与次数相等的位置 就是频率最高的数字
for j in nums_count:
    if j == max(nums_count):
        print(nums[nums_count.index(j)])
        break

day 6 列表推导式练习题

  1. 创建一个列表,列表中有10个数字, 保证列表中元素的顺序,对列表进行排重,并对列表使用进行降序排序
例如:[70, 88, 91, 70, 107, 234, 91, 177, 282, 197]
		--- 去重之后 [70, 88, 91, 107, 234, 177, 282, 197]
  	---- 降序排序 [282, 234, 197, 177, 107, 91, 88, 70]
nums = [70, 88, 91, 70, 107, 234, 91, 177, 282, 197]
nums_only = []
for i in nums:
    if i not in nums_only:
        nums_only.append(i)
print(nums_only)
print(sorted(nums_only, reverse=True))
  1. 利用列表推导式, 完成以下需求

a. 生成一个存放1-100中各位数为3的数据列表

结果为 [3, 13, 23, 33, 43, 53, 63, 73, 83, 93]
print([x for x in range(1, 101) if x % 10 == 3])

b. 利用列表推到是将 列表中的整数提取出来

例如:[True, 17, "hello", "bye", 98, 34, 21] --- [17, 98, 34, 21]
list1 = [True, 17, "hello", "bye", 98, 34, 21]
print([x for x in list1 if type(x) == int])

c.利用列表推导式 存放指定列表中字符串的长度

例如: ["good", "nice", "see you", "bye"] --- [4, 4, 7, 3]
list1 = ["good", "nice", "see you", "bye"]
print([len(x) for x in list1])

d. 利用列表推导式删除列表中整数个位数小于5的元素

# 例如:[24, 'abc', 99, True, 21, 38, 'hello'] --- ['abc', 99, True, 38, 'hello']

list1 = [24, 'abc', 99, True, 21, 38, 'hello']
print([x for x in list1 if (type(x) == str) or(type(x) == int and x % 10 >= 5) or (type(x) == bool)])

e. 利用列表推导式获取元素是元组的列表中每个元组的最后一个元素

# 例如:[(10, 20, 30), ('abc', 'hello'), (1, 2, 3.4), (True, False)]  --- [30, 'hello', 3.4, False]
list1 = [(10, 20, 30), ('abc', 'hello'), (1, 2, 3.4), (True, False)]
print([x[-1] for x in list1])

f.利用列表推导式将数字列表中所有的奇数乘以2,所有的偶数除以2

#例如: [23, 4, 67, 88, 90, 21]  -> [46, 2, 134, 44, 45, 42]

list1 = [23, 4, 67, 88, 90, 21]
print([i * 2 if i % 2 == 1 else i // 2 for i in list1])
  1. 已知一个列表获取列表中指定元素所有的下标

    # 例如:[10, 20, 34, 10, 9, 78]
    # 10的下标:[0, 3]
    # 20的下标:[1]
    # 30的下标:[]
    
    nums = [10, 20, 34, 10, 9, 78]
    nums10 = []
    nums20 = []
    nums30 = []
    for i in range(len(nums)):
        if nums[i] == 10:
            nums10.append(i)
    print(nums10)
    
    for i in range(len(nums)):
        if nums[i] == 20:
            nums20.append(i)
    print(nums20)
    
    for i in range(len(nums)):
        if nums[i] == 30:
            nums30.append(i)
    print(nums30)
    
  2. *已知一个数字列表,写程序判断这个列表时候是连续递增列表。

    #例如:
    #[1, 2, 3, 4, 5]   -> True
    #[23, 45, 78, 90]  -> True
    #[1, 3, 2, 4, 5]	-> False
    list1 = [1, 2, 3, 4, 5]
    list2 = [23, 45, 78, 90]
    list3 = [1, 3, 2, 4, 5]
    print(list1 == sorted(list1))
    print(list2 == sorted(list2))
    print(list3 == sorted(list3))
    
  3. 已知两个列表,将两个列表按照下面的规律交叉合并

    # A = [10, 20, 30, 40, 50]
    # B = [100, 200, 300]
    # 结果:[10, 100, 20, 200, 30, 300, 40, 50]
    
    A = [10, 20, 30, 40, 50]
    B = [100, 200, 300]
    C = []
    for i in range(min(len(A), len(B))):
        print(i)
        C.append(A.pop(0))
        C.append(B.pop(0))
    print(C+A+B)
    
  4. 已知两个有序列表,将两个列表合并,合并后的新列表中元素仍然是递增列表

    # A = [10, 20, 30, 40, 50]
    # B = [25, 44, 60]
    # 结果:[10, 20, 25, 30, 40, 45, 50, 60]
    A = [10, 20, 30, 40, 50]
    B = [25, 44, 60]
    print(sorted(A + B))
    
    
举报

相关推荐

线程相关内容

路由相关内容

ESLint相关内容

nginx相关内容的安装

多线程相关内容

AQS面试相关内容

Kafka相关内容复习

0 条评论