Python学习小技巧总结

📅 2026/7/3 13:45:39 👁️ 阅读次数 📝 编程学习
Python学习小技巧总结

三元条件判断的3种实现方法

C语言中有三元条件表达式,如 a>b?a:b,Python中没有三目运算符(?:),但Python有它自己的方式来实现类似的功能。这里介绍3种方法:

true_part if condition else false_part

a,b=2,3
c=a if a>b else b

a,b=2,1
c=a if a>b else b

1

2

>>>printc

2

利用and-or条件判断的特性来实现三元条件判断

首先介绍一下,and和or的用法:

python 中的and从左到右计算表达式,若所有值均为真,则返回最后一个值,若存在假,返回第一个假值。

无论是列表,元组还是字符串,空表示False,非空表示True

1

2

3

4

>>>'python'and[]and(2,3)

[]

>>>'python'and[2,3]and(3,4)

(3,4)

or 也是从左到右计算表达式,存在真,则返回第一个为真的值,若均为假,则返回最后一个值。

1

2

3

4

>>>'python'or[3,4]or()

'python'

>>> ''or[]or()

()

然后,我们利用and-or条件判断的特性来实现三元条件判断:

a,b=2,1
c = (a>b and [a] or [b])[0]

1

2

>>>printc

2

使用列表

a,b=2,7
c = [b,a][a>b]

1

2

>>>printc

7

分析:若a>b为真,由于真用1表示,因此相当于c=[b,a][1],即c=a

若a>b为假,由于假用0表示,因此相当于c=[b,a][0],即c=b

1

2

3

4

>>>int(False)

0

>>>int(True)

1

字典(dict)

以下问题都是在用Python写KNN的时候遇到的:

dict_items()

python 字典(dict)的特点就是无序的,按照键(key)来提取相应值(value),如果我们需要字典按值排序的话,那可以用下面的方法来进行:

1 下面的是按照value的值从大到小的顺序来排序。

dic = {‘a':31, ‘bc':5, ‘c':3, ‘asd':4, ‘aa':74, ‘d':0}
dict= sorted(dic.items(), key=lambda d:d[1], reverse = True)
print(dict)

输出的结果:

[(‘aa', 74), (‘a', 31), (‘bc', 5), (‘asd', 4), (‘c', 3), (‘d', 0)]

下面我们分解下代码:

print dic.items() 得到[(键,值)]的列表。

然后用sorted方法,通过key这个参数,指定排序是按照value,也就是元素d[1]的值来排序。reverse = True表示是需要翻转的,默认是从小到大,翻转的话,那就是从大到小。

2 对字典按键(key)排序:

dic = {‘a':31, ‘bc':5, ‘c':3, ‘asd':4, ‘aa':74, ‘d':0}
dict= sorted(dic.items(), key=lambda d:d[0])
print(dict)

dict_get()

dic = {‘a':31, ‘bc':5, ‘c':3, ‘asd':4, ‘aa':74, ‘d':0}

1

2

3

4

5

6

dic.get(‘a',1)

31

dic.get(‘d',1)

0

dic.get(‘f',1)

1

D.get(k[,d]) -> D[k] if k in D, else d. d defaults to None.

如果k在字典中,返回D[k],即value值,否则返回d,d默认为None

Image和Ndarray互相转换

1

2

3

4

5

6

7

8

9

10

11

12

importnumpy as np

fromPILimportImage

img=Image.open(filepath)

img_convert_ndarray=np.array(img)

ndarray_convert_img=Image.fromarray(img_convert_ndarray )

# np.array(object) 这个函数很强大啊,看源码里面给的注释

# object : array_like

# An array, any object exposing the array interface, an object whose

# __array__ method returns an array, or any (nested) sequence.