三元条件判断的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
|
>>> print c
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
|
>>> print c
2
|
使用列表
a,b=2,7
c = [b,a][a>b]
1
2
|
>>> print c
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
|
import numpy as np
from PIL import Image
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.
|
原文链接:https://blog.csdn.net/sinat_34022298/article/details/77017013