07 - 列表的进阶

Day 07

一、列表的相关函数

1. 列表的比较运算:==、!=、 >、<、>=、<=

  • a. 列表的比较运算:==、!=、 >、<、>=、<=
print(10 == 'abc')                     # False
print([10, 20, 30] == [10, 20, 30])      #True
print([10, 20, 30] == [10, 30, 20])      # False
print([10, 20] == 'abc')            # False
  • b. >、<、>=、<=
  • 注意:列表比较大小,只能是两个列表进行比较
  • 比较规则:比较第一对不相等的元素的大小(相同位置的元素是一对儿)
print([10, 2000, 30992, 42220, 522340] > [100, 1])          # False
print([10, 20, 30] > [10, 2, 300])                                 #True
# print([10, 'abc', 20, 30] > [10, 23, 9])   非同类型无法比较

2. 列表(序列)相关函数

  • a. sum(列表) - 求列表中所有元素的数值和(列表中元素必须是数字)
scores = [100, 19, 34, 89, 67, 34, 99] 
print(sum(scores))                        # 442

print(sum(range(1, 101)))                # 5050
  • b. max、min
  • max(列表) - 获取列表中的最大元素(列表中的元素支持比较运算)
  • min(列表) - 获取列表中的最小元素(列表中的元素支持比较运算)
scores = [100, 19, 34, 89, 67, 34, 99]
print(max(scores))  # 100
print(min(scores))  # 19
  • c. 排序函数

  • sorted(列表) - 将列表中的元素从小到大排序,产生一个新的列表

  • sorted(列表, reverse=True) - 将列表中的元素从大到小排序,产生一个新的列表

scores = [100, 19, 34, 89, 67, 34, 99]

scores = sorted(scores)
print(scores)       # [100, 19, 34, 89, 67, 34, 99]


new_scores = sorted(scores, reverse=True)
print(new_scores)   # [100, 99, 89, 67, 34, 34, 19]
  • d. len(列表) - 统计列表中元素的个数
scores = [100, 19, 34, 89, 67, 34, 99]
print(len(scores) )  # 7
  • e. list(序列) - 将指定序列转换成列表
  • 任何序列都可以转换成列表,转换的时候直接将序列中的元素作为列表的元素


print(list('abc'))      # ['a', 'b', 'c']
print(list(range(10, 15)))      # [10, 11, 12, 13, 14]

二、列表的相关方法

1.列表.clear() - 清空列表


nums = [20, 89, 23]
print(nums)     # [20, 89, 23]

nums.clear()
print(nums)     # []

2.列表.copy() - 拷贝(浅拷贝)原列表产生一个一模一样的新列表,将新列表返回

  • 用变量保存数据的时候,变量真正保存的其实是数据在内存中的地址;

  • 当用一个变量直接给另外一个变量赋值的时候,赋的其实是变量中保存地址,赋值后两个变量指向的是同一块内存。

a = [20, 89, 23]
b = a
c = a.copy()            # 列表[:]、列表*1、列表+[] 都是浅拷贝

print('a:', a)
print('b:', b)
print('c:', c)

'''
a: [20, 89, 23]
b: [20, 89, 23]
c: [20, 89, 23]
'''


a.append(100)
print('a:', a)
print('b:', b)
print('c:', c)
'''
a: [20, 89, 23, 100]
b: [20, 89, 23, 100]
c: [20, 89, 23]
'''

3.列表.count(数据) - 统计列表中指定数据出现的次数(数据的个数)

nums = [10, 34, 45, 90, 10, 45, 45, 78, 45]
print(nums.count(10))  # 2
print(nums.count(45))  # 4
print(nums.count(100)) # 0

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


nums = [10, 20, 30]
nums.extend('abc')
print(nums)     # [10, 20, 30, 'a', 'b', 'c']

nums = [10, 20, 30]
nums.extend([100, 200])
print(nums)     # [10, 20, 30, 100, 200]

5.列表.index(数据) - 获取指定数据在列表中的第一个下标(如果数据不存在会报错)

nums = [10, 34, 45, 90, 10, 45, 45, 78, 45]
print(nums.index(34))       # 1
print(nums.index(45))       # 2
# print(nums.index(100))    # 报错!

6.列表.reverse() - 列表倒序

nums = [10, 34, 45, 90, 10, 45, 45, 78, 45]
nums.reverse()
print(nums)     # [45, 78, 45, 45, 10, 90, 45, 34, 10]

7.列表.sort()、sorted(序列)

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

  • sorted(序列) - 将序列中的元素升序排序(不会修改原序列中元素的顺序,会产生一个新的列表)
  • sorted(序列, reverse=True)
nums = [10, 34, 45, 90, 10, 45, 45, 78, 45]
nums.sort()
print(nums)     # [10, 10, 34, 45, 45, 45, 45, 78, 90]


nums = [10, 34, 45, 90, 10, 45, 45, 78, 45]
new_nums = sorted(nums)
print(new_nums)     # [10, 10, 34, 45, 45, 45, 45, 78, 90]


练习题

  1. 创建一个列表,列表中有10个数字, 保证列表中元素的顺序,对列表进行排重,并对列表使用进行降序排序
    例如:
    nums = [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]
for i in range(len(nums)-1,-1,-1):
    if nums.count(nums[i]) > 1:
        del nums[i]
nums.sort(reverse=True)
print(nums)
  1. 创建一个列表,列表中有10个数字, 保证列表中元素的顺序,对列表进行排重,并对列表使用进行降序排序

a. 生成一个存放1-100中各位数为3的数据列表
结果为 [3, 13, 23, 33, 43, 53, 63, 73, 83, 93]

nums = [i for i in range(3,100,10)]
print(nums)

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

list1 = [True, 17, "hello", "bye", 98, 34, 21]
list2 = [i for i in list1 if type(i) == int]
print(list2

c.利用列表推导式 存放指定列表中字符串的长度
例如: [“good”, “nice”, “see you”, “bye”] — [4, 4, 7, 3]

list1 = ["good", "nice", "see you", "bye"]
list2 = [len(i) for i in list1]
print(list2)

d. 利用列表推导式删除列表中整数个位数小于5的元素
例如:[24, ‘abc’, 99, True, 21, 38, ‘hello’] — [‘abc’, 99, True, 38, ‘hello’]

list1 = [24, 'abc', 99, True, 21, 38, 'hello']
list2 = [i for i in list1 if not (type(i) == int and i % 10 < 5)]
print(list2)

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)]
list2 = [i[-1] for i in list1 ]
print(list2)

f.利用列表推导式将数字列表中所有的奇数乘以2,所有的偶数除以2
例如: [23, 4, 67, 88, 90, 21] -> [46, 2, 134, 44, 45, 42]

nums = [23, 4, 67, 88, 90, 21]
nums2 = [x / 2 if x % 2 == 0 else x * 2 for x in nums]
print(nums2)
  1. 已知一个列表获取列表中指定元素所有的下标
    例如:[10, 20, 34, 10, 9, 78]
    10的下标:[0, 3]
    20的下标:[1]
    30的下标:[]

nums = [10, 20, 34, 10, 9, 78]
num1 = 10
nums = [i for i in range(len(nums)) if nums[i] == num1]
print(nums)
  1. 已知一个数字列表,写程序判断这个列表时候是连续递增列表。
    例如:
    [1, 2, 3, 4, 5] -> True
    [23, 45, 78, 90] -> True
    [1, 3, 2, 4, 5] -> False
nums1 = [1, 2, 7, 4, 5]
print(nums1 == sorted(nums1))
  1. 已知两个列表,将两个列表按照下面的规律交叉合并
    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 = []
while True:
    C.append(A.pop(0))
    C.append(B.pop(0))
    if A == [] or B == []:
        break
C.extend(A+B)
print(C)
  1. 已知两个有序列表,将两个列表合并,合并后的新列表中元素仍然是递增列表
    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))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,关于 Docker 数据卷的进阶篇,我可以为你提供以下内容: 1. 数据卷的类型 Docker 数据卷有三种类型:主机挂载、匿名卷、命名卷。其中,主机挂载是将主机上的目录挂载到容器中;匿名卷是在容器内部创建的临时卷;命名卷则是给卷起一个名字,并将其保存在 Docker 数据卷存储区中。 2. 数据卷的备份与恢复 我们可以使用 Docker Compose 中的 `docker-compose.yml` 文件来定义数据卷的备份和恢复。具体方法是,在 `volumes` 字段中定义卷及其备份路径,然后在 `services` 字段中指定容器和对应的卷名称。 例如: ``` version: "3" services: db: image: mysql volumes: - db_data:/var/lib/mysql command: --default-authentication-plugin=mysql_native_password backup: image: backup volumes: - /path/to/backup:/backup - db_data:/data/db command: backup.sh volumes: db_data: ``` 以上代码中,我们定义了一个 `db` 服务和一个 `backup` 服务。其中,`db` 服务使用了名为 `db_data` 的命名卷,并挂载到容器的 `/var/lib/mysql` 目录中;`backup` 服务则使用了两个卷,一个是挂载到宿主机上的 `/path/to/backup` 目录,用于保存备份文件;另一个是使用了 `db_data` 命名卷,并挂载到容器的 `/data/db` 目录中,用于备份数据。最后,我们在 `backup` 服务中执行了备份脚本 `backup.sh`。 3. 数据卷的共享 我们可以将一个数据卷挂载到多个容器中,实现数据的共享。例如,我们可以将一个命名卷挂载到 `web` 和 `db` 两个服务中,这样它们就可以共享数据了。 ``` version: "3" services: web: image: nginx volumes: - web_data:/usr/share/nginx/html db: image: mysql volumes: - db_data:/var/lib/mysql - web_data:/var/www/html volumes: db_data: web_data: ``` 以上代码中,我们定义了一个 `web` 服务和一个 `db` 服务。其中,`web` 服务使用了名为 `web_data` 的命名卷,挂载到容器的 `/usr/share/nginx/html` 目录中;`db` 服务则使用了 `db_data` 和 `web_data` 两个卷,分别挂载到容器的 `/var/lib/mysql` 和 `/var/www/html` 目录中,实现了数据的共享。 希望以上内容能够对你有所帮助!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值