索引
1. 核心数据类型
1.1. 整数 (int)
x = 10, y = -5
1.2. 浮点数 (float)
pi = 3.14
1.3. 布尔值 (bool)
flag = True, flag = False
1.4. 字符串 (str)
s = “hello world”
a, b = b, a 交换变量
2. 核心数据结构
2.1. 列表 (List)
2.1.1. 创建
1 2 3
| nums = [1, 2, 3, 4]
ans = []
|
2.1.2. 访问
1 2 3
| first = nums[0]
last = nums[-1]
|
2.1.3. 切片
创建子列表,语法 [start:stop:step]1 2 3 4
| copy = nums[:]
reverse = nums[::-1]
|
2.1.4. 列表的常用函数和操作
1 2 3 4 5
| len(nums) sum(nums) min(nums) / max(nums) sorted(nums) value in nums
|
2.1.5. 列表的常用方法
1 2 3 4 5
| nums.append(value) nums.pop(index) nums.sort() nums.reverse() nums.index(value)
|
2.2. 字典 (Dictionary / Hash Map)
字典是无序的键值对 (key: value) 集合。它通过哈希表实现,查找、插入、删除的平均时间复杂度为 O(1)
2.2.1. 创建
1 2
| lookup = {'name': 'Alice', 'id': 123} empty_dict = {}
|
2.2.2. 操作
1 2 3 4 5 6 7 8 9 10 11 12
| name = lookup['name'] lookup['id'] = 456
'id' in lookup
del lookup['id']
for key in lookup.keys()
for value in lookup.values()
for key, value in lookup.items()
|
2.3. 集合 (Set)
集合是无序、不重复的元素集合。其底层也是哈希表,因此检查一个元素是否存在的速度极快 (O(1))
2.3.1. 创建
1 2 3 4
| unique_nums = {1, 2, 3} empty_set = set()
from_list = set([1, 2, 2, 3, 1])
|
2.3.2. 操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| unique_nums.add(4) unique_nums.remove(3)
3 in unique_nums
set1 = {1, 2, 3} set2 = {3, 4, 5}
intersection = set1 & set2
union = set1 | set2
difference = set1 - set2
|
2.4. 字符串 (String)
不可变的文本序列
2.4.1. 操作
切片和索引与列表完全相同1 2 3 4 5 6
| new_str = str1 + str2
' '.join(['111', '222', '333'])
"a,b,c".split(',')
|
3. 控制流与逻辑
3.1. 条件判断 (if/elif/else)
1 2 3 4 5 6
| if score > 90: grade = 'A' elif score > 80: grade = 'B' else: grade = 'C'
|
三元运算符 (Ternary Operator): result = “Even” if num % 2 == 0 else “Odd”
3.2. 循环
3.2.1. for循环
1 2 3 4 5 6 7 8 9 10
| for num in numbers: print(num)
for i in range(5): print(i)
for index, value in enumerate(numbers): print(f"Index: {index}, Value: {value}")
|
3.2.2. while 循环
1 2 3 4
| count = 5 while count > 0: print(count) count -= 1
|
3.3. 函数
1 2 3 4 5 6 7 8 9
| def solve(parameter1, parameter2): result = 0 return result
|
4. 通用内置函数
4.1. len(obj)
1 2 3
| length = len([1, 5, 9]) str_len = len("hello") dict_len = len({'a': 1, 'b': 2})
|
4.2. sum(iterable)
1 2
| total = sum([10, 20, 30])
|
4.3. min(iterable) / max(iterable)
1 2 3 4
| min_val = min([3, 1, 9, 2]) max_val = max([3, 1, 9, 2]) min_char = min("database")
|
4.4. sorted(iterable)
1 2 3 4 5 6 7
| nums = [3, 1, 4, 2] new_sorted_list = sorted(nums)
sorted_chars = sorted("bca")
|
4.5. abs(x)
4.6. range(start, stop, step)
1 2 3 4 5 6 7 8 9 10 11
| for i in range(3): print(i)
for i in range(1, 4): print(i)
for i in range(0, 5, 2): print(i)
|
4.7. 类型转换函数
4.7.1. int(x)
4.7.2. str(obj)
4.7.3. list(iterable)
4.7.4. set(iterable)
1
| new_set=set([1, 2, 2, 3])
|
4.8. enumerate(iterable)
1 2 3 4 5 6 7
| letters = ['a', 'b', 'c'] for index, value in enumerate(letters): print(f"Index: {index}, Value: {value}")
|
4.9. zip()
1 2 3 4 5 6 7
| names = ['Alice', 'Bob'] scores = [95, 88] for name, score in zip(names, scores): print(f"{name}: {score}")
|
4.10. map(function, iterable)
1 2 3 4 5 6 7 8
| str_nums = ["1", "2", "3"]
int_nums = list(map(int, str_nums))
line = "10 20 30" nums = list(map(int, line.split()))
|
5. 核心数据类型方法
5.1. 字符串 (str)
5.1.1. str.split(sep)
1 2 3 4 5
| s = "hello world" words = s.split(' ')
csv = "a,b,c" items = csv.split(',')
|
5.1.2. sep.join(list)
1 2 3 4 5
| words = ['hello', 'world'] s = " ".join(words)
chars = ['p', 'y'] result = "-".join(chars)
|
5.1.3. str.find(sub)
1 2 3 4
| s = "banana"
index1 = s.find('na') index2 = s.find('z')
|
5.1.4. str.count(sub)
1 2
| s = "banana" count = s.count('a')
|
5.1.5. str.strip()
1 2
| s = " hello " clean_s = s.strip()
|
5.1.6. str.isdigit()
1 2 3 4
| s1 = "123" s2 = "a123" print(s1.isdigit()) print(s2.isdigit())
|
5.2. 列表 (list)
5.2.1. list.index(x[, start[, end]])
1 2 3 4
| aList = [123, 'xyz', 'runoob', 'abc'] index1 = aList.index( 'xyz' ) index2 = aList.index( 'runoob', 1, 3 )
|
5.2.2. list.append(x)
1 2
| nums = [1, 2] nums.append(3)
|
5.2.3. list.pop(i)
时间复杂度为O(n),list模拟队列效率很低1 2 3 4
| nums = [10, 20, 30] last = nums.pop()
first = nums.pop(0)
|
5.2.4. list.sort(cmp=None, key=None, reverse=False)
1 2 3 4 5 6 7 8 9 10 11 12 13
| nums = [3, 1, 4, 2] nums.sort()
nums.sort(reverse=True)
def takeSecond(elem): return elem[1] random = [(2, 2), (3, 4), (4, 1), (1, 3)]
random.sort(key=takeSecond)
|
5.2.5. list.reverse()
1 2
| nums = [1, 2, 3] nums.reverse()
|
5.2.6. list.remove(obj)
删掉第一个匹配的1 2 3
| list1 = ['Google', 'Runoob', 'Taobao', 'Baidu'] list1.remove('Taobao') list1.remove('Baidu')
|
5.3. 字典 (dict)
5.3.1. dict.get(key, default)
1 2 3 4 5
| counts = {'a': 2, 'b': 1}
val1 = counts.get('b', 0)
val2 = counts.get('c', 0)
|
5.3.2. dict.keys()
1 2 3 4 5
| counts = {'a': 2, 'b': 1} for key in counts.keys(): print(key)
sorted_keys = sorted(counts.keys())
|
5.3.3. dict.values()
1 2 3 4 5
| counts = {'a': 2, 'b': 1} for value in counts.values(): print(value)
values_list = list(counts.values())
|
5.3.4. dict.items()
1 2 3 4 5
| counts = {'a': 2, 'b': 1} for key, value in counts.items(): print(f"{key}: {value}")
|
6. Collections
defaultdict
使用dict时,如果引用的Key不存在,就会抛出KeyError。如果希望key不存在时,返回一个默认值,就可以用defaultdict1
| dd = defaultdict(lambda: 'N/A')
|
使用lambda 可创建默认值
否则的话默认是0
这边还在等待更新中
其实是刷题刷着刷着觉得应该开始总结经验还有防止忘记