Python 常识入门(?)

警告
本文最后更新于 2022-05-21,文中内容可能已过时。

list, tuple, set, dict

1
2
3
4
[i for i in range(10)]
(i for i in range(10))
{i for i in range(10)}
{i:i for i in range(10)}

lambda

1
2
3
4
lambda arguments : expression

x = lambda a : a + 10
print(x(5))

sort

1
2
3
4
arr=[1,8,3,6,5,4,7,2,9]

sorted(arr)
list.sort(reverse=True|False, key=myFunc)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
def myFunc(e): 
    return e['year']

cars = [
  {'car': 'Porsche', 'year': 1963},
  {'car': 'Audi', 'year': 2010},
  {'car': 'BMW', 'year': 2019},
  {'car': 'Volvo', 'year': 2013}
]

cars.sort(key=myFunc)
cars.sort(key=lambda e: e['year'])

cache

可以用于记忆化搜索。

请不要使用cache,除非你知道自己在做什么!

1
2
3
4
5
6
7
8
9
from functools import lru_cache
@lru_cache(None)
def add(x, y):
    print("calculating: %s + %s" % (x, y))
    return x + y
add.clear_cache()
print(add(1, 2))
print(add(1, 2))
print(add(2, 3))

引用

重要!python变量默认为引用,错误使用会带来麻烦

1
2
3
4
>>> a=5;id(a)
2094838213040
>>> a=6;id(a)
2094838213072
1
2
3
4
>>> arr=[1,2,3];id(arr)
2094872788160
>>> arr[2]*=-1;id(arr)
2094872788160
1
2
3
4
>>> arr=[[0]*5 for i in range(2)];arr
[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
>>> arr[1][1]=1;arr
[[0, 0, 0, 0, 0], [0, 1, 0, 0, 0]]
1
2
3
4
>>> arr=[[0]*5]*2;arr
[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
>>> arr[1][1]=1;arr
[[0, 1, 0, 0, 0], [0, 1, 0, 0, 0]]

作用域

if语句等内定义的变量,外部可用;

注意globalnonlocal关键字的使用

0%