数据类型

数据结构从 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

andTrueFalse
TrueTrueFalse
FalseFalseFalse
orTrueFalse
TrueTrueTrue
FalseTrueFalse
notTrueFalse
FalseTrue

集合 Set

唯一性

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