(),[] -- 列表与元组

序列

  • 索引

  • python比较神奇,可以从正面数或反着数,每一个位置都有自己的下标

  • 切片
    假设现在有一阵列

a = [1, 2, 3, 4, 5]
print(a[0:4:2])
# [1, 3, 5]
# a是阵列的名称
# []里面的第一个数字是起点(start)
# 第二个是终点(end)
# 第三个是间隔(step)
  • 相加 and 相乘
a = [1, 2]
b = [3, 4]
print(a + b)
# [1, 2, 3, 4]
  • 检查某个值是否存在
a = [1, 3, 5]
print(5 in a)
# True
  • 长度、最大值、最小值
a = [1, 3, 5, 7, 9]
print(len(a), max(a), min(a))
# 5 9 1

阵列

  • 建立
# 直接创建
name = [element1, element2, ...]

# 创建空阵列
name = []

# 使用list()函数
nums = list(range(10))
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
  • 删除
name = [1, 2]
del name

阵列查询

name = [1, 2, 3]
print(name[2])
# 3

阵列遍历

name = [1, 2, 3, 4]

# 使用for回圈
for item in name:
    print(item, end = '')

# 使用for回圈和enumerate()函数
for index, item in enumerate(name):
    print(index, item)

新增、修改、删除元素

  • 新增
# append()是加在屁股後面的
name = [1, 2, 3]
name.append(4)
print(name)
# [1, 2, 3, 4]

# 也可以使用insert(),但效率不高,不推荐使用

# 使用extend()将2个阵列加在一起
name2 = [5, 6]
print(name.extend(name2))
[1, 2, 3, 4, 5, 6]
  • 修改元素
name = [0, 1, 3, 3]
name[2] = 2
print(name)
#[0, 1, 2, 3]
  • 删除元素
name = [0, 1, 2, 3]

# 根据index值
del name[3]
# [0, 1, 2]

# 根据元素值
name.remove(2)
# [0, 1]

对阵列进行统计

  • 使用count()函数
nums = [0, 1, 1, 2, 3, 3]
print(nums.count(1))
# 2
  • 获得指定元素第一次出现的位置
# index(object)
nums = [0, 1, 1, 2, 3]
answer = nums.index(1)
print(answer)
# 1
  • 统计数值和
# sum(listname[, start])
nums = [0, 1, 2, 3]
answer = sum(nums)
print(answer)
# 6

阵列排序

  • 使用sort()函数
# namelist.sort(key = None, reverse = True)
# key是比较的键(值)
# reverse则可指定是升序或降序

nums = [0, 5, 1, 2, 3, 4]

nums = nums.sort()
print(nums)
# [0, 1, 2, 3, 4, 5]

nums = nums.sort(reverse = False)
print(nums)
# [5, 4, 3, 2, 1, 0]
  • 使用sorted()函数
# 简单明了的意思是把sort()反过来看就好
nums = [0, 2, 5, 6, 1]

nums = sorted(nums)
print(nums)
# [0, 1, 2, 5, 6]

阵列生成式

  • 生成式可快速生成一个阵列
# list = [表达式 for 循环变量 in range()]

nums = [i for i i in range(10)]
print(nums)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
  • 根据阵列指定需求成新阵列
# list = [表达式 for 循环变量 in 原阵列]

nums = [0, 1, 2, 3]
new_nums = [x*0.5 for x in nums]
print(new_nums)
# [0.0, 0.5, 1.0, 1.5]
  • 选择符合条件的元素生成新阵列
nums = [0, 1, 2, 3, 5, 9]
new_nums = [x for x in nums if x % 3 == 0]
print(new_nums)
# [0, 3, 9]

二维阵列

  • 定义二维阵列(下标位置)
# [[00, 01, 02, 03],
#  [10, 11, 12, 13],......]
  • 使用双层for回圈
test = []
for i in range(4):
    test.append([])
    for j in range(5):
        test[i].append(j)
print(test)
# [[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]
  • 使用阵列生成式创建
nums = [[i for i in range(5)] for j in range(4)]
print(nums)
# [[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]

创建元组

  • 使用赋值运算符直接创建
# 是(),不是[],[]是阵列非元组
nums = (1, 2, 3)

# 其实未必要用(),用 , 隔开就可以了
nums = '0', '1', '2'
print(nums)
# ('0', '1', '2')
  • 创建空元组
empty = ()
  • 建立data元组
# tuple(data)

nums = tuple(range(0, 5, 2))
print(nums)
# (0, 2, 4)

删除元组

# 直接删除即可

nums = (0, 1, 2)
del nums

寻找元组元素

nums = (0, 1, 2)
print(nums[0])
# 0

print(nums[0:2])
# (0, 1)
  • 这边可以结合上面阵列的enumerate()函数进行遍历元组

修改元组

  • 元组不能进行单个修改,所以......
nums = (0, 1, 2)
nums = (1, 2)
print(nums)
# (1, 2)

元组相加

  • 必须是元组加元组
nums = (0, 1, 2)
add_nums = (3, 4)
print(nums + add_nums)
# (0, 1, 2, 3, 4)

元组推导式

import random

nums = (random.randint(10, 100) for i in range(10))
print(nums)
# <generator object <genexpr> at 0x0000016C21DD8190>
  • 这边还需要一个tuple,因为元组推导式生成的结果不是一个元组,所以还需要转换

  • 加上

nums = tuple(nums)
print(nums)
# (24, 23, 59, 81, 35, 46, 18, 60, 89, 87)
  • 这边可以用for遍历,或是__next__()方法输出元素
nums = (i for i in range(3))
print(nums.__next__())
# 0
print(nums.__next__())
# 1

阵列与元组的区别

  • 阵列可拿单独的元素出来改写,元组须整个替换
  • 阵列有append()、extend()、insert()、remove()、pop()等方法改写,但元组都没有
  • 两者都支援slice,但元组不支援修改
  • 元组的速度比阵列快,不果资料不须更动,不进行修改,建议使用元组
  • 阵列不能作为字典的键,但元组可以

<<:  [Day 1] 微解封 微服务 那你有听过微框架吗? 又为何我选择 Ktor?

>>:  前言

[ 卡卡 DAY 17 ] - React Native 用 Animated 来做简单骨架屏

上一章节讲了 Animated 的使用 我们运用 start() 来做个骨架屏唷! 制作 bann...

Spring Framework X Kotlin Day 11 NoSQL

GitHub Repo https://github.com/b2etw/Spring-Kotlin...

完赛心得

完赛不发个心得好像怪怪的。原本想整个系列补充完再发心得,但是没有赶稿压力下的产出超低落,果然是人性....

[Day18] Esp32用STA mode + Relay - (程序码讲解)

1.前言 今天就不废话拉,直接进入主题(大家应该都去报复性出游了吧)。 2.html 其实HTML目...