数据类型

数据结构从 0 到 1

Python 中的数据类型:

  • 不可变:Number, String, Tuple
  • 可变: Bool, List, Set, Dictionary

数字 Number

int, long, float, complex

  • // 向下取整
5 // 3  =  1.67 # 1
-5 // 3 = -1.67 # -2
  • % 取模 - 返回除法的余数
365 % 10 # 5
5 % 3 # 2

Tips

奇数
num % 2 != 0
偶数
num % 2 == 0

数组 Array

数组支持随机访问。Python 的数组分三种类型:

  • list 列表
  • tuple 元组
  • dictionary 字典

列表 list []

遍历列表 nums

1
2
3
4
5
for num in nums:
    print(num)

for idx, val in enumerate(nums):
    print(idx, val)
操作 说明
.insert(index, value)
.append(value)
.remove(value)
del list[index]
.pop()
.sort() 排序
.reverse() 逆序

Warning

直接赋值 & 浅拷贝(copy) & 深拷贝(deepcopy)

  • 直接赋值:其实就是对象的引用(别名)。
  • 浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象。
  • 深拷贝(deepcopy): copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
import copy
a = [1, 2, 3, 4, ['a', 'b']] #原始对象
 
b = a                     #赋值,传对象的引用
c = copy.copy(a)          #对象拷贝,浅拷贝
d = copy.deepcopy(a)      #对象拷贝,深拷贝
 
a.append(5)               #修改对象a
a[4].append('c')          #修改对象a中的['a', 'b']数组对象
 
print( 'a = ', a )
print( 'b = ', b )
print( 'c = ', c )
print( 'd = ', d )

>>> ('a = ', [1, 2, 3, 4, ['a', 'b', 'c'], 5])
>>> ('b = ', [1, 2, 3, 4, ['a', 'b', 'c'], 5])
>>> ('c = ', [1, 2, 3, 4, ['a', 'b', 'c']])
>>> ('d = ', [1, 2, 3, 4, ['a', 'b']])

元组 tuple()

不可修改

字典 dictionary{:}

哈希表或散列表

dict = {key1:value1, key2:value2, key3:value3}

  • dict['key'] = value
  • del dict['key']
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
# define user = dict()
user = {
    'userName': 'MatNoble',
    'gender': 'Male',
    'age': 18,
}

# .items()
for key, value in user.items():
    print(f"\nKey:{key}")
    print(f"Value:{value}")

# .key() + .get(key)
for key in user.keys():
    print(key + ":" + str(user.get(key)))

# .values()
for value in user.values():
    print(value)

Open In Colab

栈 Stack

LIFO(Last In, First Out - 后进先出) ◎ LIFO(Last In, First Out - 后进先出)
操作 说明 时间复杂度
.push() 将元素放置到栈顶 O(1)
.pop() 将栈顶元素弹出 O(1)
.top() 得到栈顶元素的值 O(1)
.isEmpty() 判断栈内是否有元素 O(1)

应用

  • 函数调用栈
  • 浏览器前进后退
  • 匹配括号
  • 单调栈用来寻找下一个更大(更小)元素

队列 Queue

FIFO (First In First Out - 先进先出) ◎ FIFO (First In First Out - 先进先出)

字符串 String

  • f -> format
first_name = "Ross"
last_name = "MatNoble"
full_name = f"{first_name} {last_name}" # Ross MatNoble
  • 特殊符号
操作 说明
\ 转义符
\n 换行符
\t 制表符

r 避免转义 print(r"\\\t\\") # \\\t\\

操作 说明
.title() 首字母大写
.upper() 大写
.lower() 小写
.strip() 消除空格

布尔 Bool

and True False
True True False
False False False
or True False
True True True
False True False
not True False
False True

集合 Set

唯一性

操作 说明
.add(value)
.update(value) 增, 列表、元组、字典
.remove(value)
.discard(value) 删,不报错
updatedupdated2021-05-272021-05-27
加载评论