自学经典5个月的python学习历程,很多老司机都不知道的奥秘

“人生苦短,我用Python”,下面分享pyhton的一些基础知识,学习中可以帮助快速入门

三元条件判断的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

>>> print c

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

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

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

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

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

[]

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

(3, 4)

·1

·2

·3

·4

·5

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

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

'python'

>>> '' or [] or ()

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

a,b=2,1

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

>>> print c

2

·1

·2

使用列表

a,b=2,7

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

>>> print c

7

·1

·2

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

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

>>> int(False)

0

>>> int(True)

字典(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}

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

自学经典5个月的python学习历程,很多老司机都不知道的奥秘_第1张图片

ImageNdarray互相转换

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.

Python统计列表中的重复项出现的次数的方法,是一个很实用的功能,适合Python初学者学习借鉴。具体方法如下:

对一个列表,比如[1,2,2,2,2,3,3,3,4,4,4,4],现在我们需要统计这个列表里的重复项,并且重复了几次也要统计出来。

方法1

[python] view plain copy

1.mylist = [1,2,2,2,2,3,3,3,4,4,4,4]

2.myset = set(mylist) #myset是另外一个列表,里面的内容是mylist里面的无重复项

3.for item in myset:

4.print("the %d has found %d" %(item,mylist.count(item)))

方法2:

[python] view plain copy

1.List=[1,2,2,2,2,3,3,3,4,4,4,4]

2.a = {}

3.for i in List:

4.if List.count(i)>1:

5. a[i] = List.count(i)

6.print (a)

利用字典的特性来实现。

方法3

[python] view plain copy

1.>>> from collections import Counter

2.>>> Counter([1,2,2,2,2,3,3,3,4,4,4,4])

3.Counter({1: 5, 2: 3, 3: 2})

这里再增补一个只用列表实现的方法:

[python] view plain copy

1.l=[1,4,2,4,2,2,5,2,6,3,3,6,3,6,6,3,3,3,7,8,9,8,7,0,7,1,2,4,7,8,9]

2.

3.count_times = []

4.for i in l :

5. count_times.append(l.count(i))

6.

7.m = max(count_times)

8.n = l.index(m)

9.

10. print (l[n])

其实现原理就是把列表中的每一个数出现的次数在其对应的位置记录下来,然后用max求出出现次数最多的位置。

只用这段代码的话,有一个缺点,如果有多个结果,最后的现实的结果只是出现在最左边的那一个,不过解决方法也很简单

自学经典5个月的python学习历程,很多老司机都不知道的奥秘_第2张图片

感兴趣的读者可以动手实践一下本文所述代码,还可以对不足之处加以改进,使之功能更加完善。下面分享一个python经典入门、自学的需要学习的知识。本书是一本Python入门书籍,适合对计算机了解不多,没有学过编程,但对编程感兴趣的读者学习使用。这本书以习题的方式引导读者一步一步学习编程,从简单的打印一直讲到完整项目的实现,让初学者从基础的编程技术入手,最终体验到软件开发的基本过程。

《Python编程从入门到精通》

本书循序渐进、由浅入深地详细讲解了Python 3语言开发的核心技术,并通过具体实例的实现过程演练了各个知识点的具体使用流程。通过两个综合实例的实现过程,介绍了Python 3语言在综合项目中的使用流程。全书内容循序渐进,以“技术解惑”和“范例演练”贯穿全书,引领读者全面掌握Python 3语言。

自学经典5个月的python学习历程,很多老司机都不知道的奥秘_第3张图片

好了,今天的知识就分享到这里,如果文章对你有有帮助,请收藏关注,在今后与你分享更多学习python的文章。同时欢迎在下面评论区留言如何学习python。

你可能感兴趣的:(python)