Python 三十个实践、建议和技巧(2)

最后

🍅 硬核资料:关注即可领取PPT模板、简历模板、行业经典书籍PDF。
🍅 技术互助:技术群大佬指点迷津,你的问题可能不是问题,求资源在群里喊一声。
🍅 面试题库:由技术群里的小伙伴们共同投稿,热乎的大厂面试真题,持续更新中。
🍅 知识体系:含编程语言、算法、大数据生态圈组件(Mysql、Hive、Spark、Flink)、数据仓库、Python、前端等等。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

从3.7版本开始,python提供了 data 类。与常规类或其他替代方法(如返回多个值或字典)相比,有以下几个优点:

  • 数据类需要至少一定数量的代码

  • 可以通过 eq 方法来比较不同的data类对象

  • 可以 repr 通过很容易地打印一个数据类来进行调试

  • 数据类需要类型提示,因此减少了 bug

一个data类的例子如下:

from dataclasses import dataclass

@dataclass

class Card:

rank: str

suit: str

card = Card(“Q”, “hearts”)

print(card == card)

True

print(card.rank)

‘Q’

print(card)

Card(rank=‘Q’, suit=‘hearts’)

8、就地变量交换

一个简洁的技巧,可以节省几行代码:

a = 1

b = 2

a, b = b, a

print (a)

2

print (b)

1

9、字典合并(Python 3.5+)

从python 3.5开始,字典的合并变得更简单了:

dict1 = { ‘a’: 1, ‘b’: 2 }

dict2 = { ‘b’: 3, ‘c’: 4 }

merged = { **dict1, **dict2 }

print (merged)

{‘a’: 1, ‘b’: 3, ‘c’: 4}

10、将字符串转化为标题格式

在标题格式中,非介词的首字母会大写。可以通过.title()方法实现:

mystring = “10 awesome python tricks”

print(mystring.title())

‘10 Awesome Python Tricks’

11、将字符串分离并存储到列表中

可以按任意字符来分割字符串,并存储到列表中,例如按空格来分割字符串:

mystring = “The quick brown fox”

mylist = mystring.split(’ ')

print(mylist)

[‘The’, ‘quick’, ‘brown’, ‘fox’]

12、将列表中的字符串合并到一起

与上一条的功能正好相反,从列表中创建字符串,并在两个单词间插入空格:

mylist = [‘The’, ‘quick’, ‘brown’, ‘fox’]

mystring = " ".join(mylist)

print(mystring)

‘The quick brown fox’

也许你会疑惑,为什么不使用mylist.join(" ")呢?归根结底,String.join()函数不仅可以连接列表,还可以连接任何可迭代的列表。将它放在String中会阻止在多个位置实现相同的功能。

13、Emoji

这些表情具有很强的表达能力,能给人留下深刻印象。更重要的是,这在分析社交媒体数据时尤其有用。首先通过以下命令安装emoji模块:

pip3 install emoji

可以按照以下方法使用表情:

import emoji

result = emoji.emojize(‘Python is :thumbs_up:’)

print(result)

‘Python is 👍’

You can also reverse this:

result = emoji.demojize(‘Python is 👍’)

print(result)

‘Python is :thumbs_up:’

14、列表切片操作

列表切片的基本语法是:

a[start:stop:step]

start,stop和step都是可选的(可填可不填),默认值是:

  • start:0

  • stop:列表的末尾

  • step:1

一些例子如下:

We can easily create a new list from

the first two elements of a list:

first_two = [1, 2, 3, 4, 5][0:2]

print(first_two)

[1, 2]

And if we use a step value of 2,

we can skip over every second number

like this:

steps = [1, 2, 3, 4, 5][0:5:2]

print(steps)

[1, 3, 5]

This works on strings too. In Python,

you can treat a string like a list of

letters:

mystring = “abcdefdn nimt”[::2]

print(mystring)

‘aced it’

15、翻转字符串和列表

可以用切片操作来翻转列表或字符串,将step设置为负值即可实现:

revstring = “abcdefg”[::-1]

print(revstring)

‘gfedcba’

revarray = [1, 2, 3, 4, 5][::-1]

print(revarray)

[5, 4, 3, 2, 1]

16、图片显示

可以通过Pillow模块来显示图片,例如显示Kitty小猫,首先安装python图片库:

pip3 install Pillow

然后下载你要显示的图片,并重命名。然后可以通过以下命令来显示图片:

from PIL import Image

im = Image.open(“kittens.jpg”)

im.show()

print(im.format, im.size, im.mode)

JPEG (1920, 1357) RGB

或者也可以直接通过IPython来显示:

Pillow的功能远不止显示图片。它可以对图片进行分析,调整大小,滤波,增强,变形等等。

17、使用map()函数

Python的一个内建函数是 map()。map()的基本语法是:

map(function, something_iterable)

传入的参数是一个函数,和一个需要执行的对象,可以是任何可迭代对象。在下面的例子中使用的是list:

def upper(s):

return s.upper()

mylist = list(map(upper, [‘sentence’, ‘fragment’]))

print(mylist)

[‘SENTENCE’, ‘FRAGMENT’]

Convert a string representation of

a number into a list of ints.

list_of_ints = list(map(int, “1234567”)))

print(list_of_ints)

[1, 2, 3, 4, 5, 6, 7]

map()是一个代替循环的好方式,可以在你的代码中尝试使用map()函数。

18、从列表或字符串中获取唯一元素

通过set()函数可以将列表或字符串转换为集合,集合中的不含重复元素:

mylist = [1, 1, 2, 3, 4, 5, 5, 5, 6, 6]

print (set(mylist))

{1, 2, 3, 4, 5, 6}

And since a string can be treated like a

list of letters, you can also get the

unique letters from a string this way:

print (set(“aaabbbcccdddeeefff”))

{‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’}

19、找出最常出现的值

查找列表或字符串中最常出现的值:

test = [1, 2, 3, 4, 2, 2, 3, 1, 4, 4, 4]

print(max(set(test), key = test.count))

4

你可以尝试自行理解上述代码。好吧,也许你并没有尝试。上述代码的工作原理如下:

  • max()将返回列表中的最大值。key参数接受单个参数函数确定定制排序顺序,在本例中,它是test.count,该函数应用于iterable对象中的每个元素。

  • .count()是列表的一个内建函数,该函数接收一个参数,并计算该参数的出现次数。因此在本例中,test.count(1)返回2,testcount(4)返回4。

  • set(test)返回test列表中的所有唯一值,因此是{1,2,3,4}。

因此在上面的这行语句中我们首先找出了test列表的所有独特值,即{1,2,3,4}。接着,将.count函数应用于set中的每个值,得到一个数量列表,然后通过max找出数量最大的值。

20、创建进度条

可以自行创建进度条,但也可以通过progress模块来快速创建:

pip3 install progress

然后通过以下代码来创建进度条:

from progress.bar import Bar

bar = Bar(‘Processing’, max=20)

for i in range(20):

Do some work

bar.next()

bar.finish()

效果如下:

21、在交互式shell中使用用 _ 来获取上一个表达式的运行结果可以使用下划线操作符来获取最后运行的表达式的输出,在IPython中操作如下:

In [1]: 3 * 3

Out[1]: 9

In [2]: _ + 3

Out[2]: 12

这种方法在python shell中也是适用的,IPython还可以通过Out[n]来获取任意第n个表达式的输出结果。

22、快速创建web服务器

您可以快速启动web服务器,来提供当前工作目录的内容:

python3 -m http.server

如果您想与同事共享一些内容,或者想测试一个简单的HTML站点,这是非常有用的。

23、多行字符串

虽然可以使用三重引号在代码中包含多行字符串,但这并不理想。在三重引号之间的所有内容都变成字符串,包括格式。相比我更喜欢第二种方式,它将多行连接在一起,允许你很好地格式化代码。惟一的缺点是需要显式地放入新行:

s1 = “”"Multi line strings can be put

between triple quotes. It’s not ideal

when formatting your code though"“”

print (s1)

Multi line strings can be put

between triple quotes. It’s not ideal

when formatting your code though

s2 = (“You can also concatenate multiple\n” +

“strings this way, but you’ll have to\n”

“explicitly put in the newlines”)

print(s2)

You can also concatenate multiple

strings this way, but you’ll have to

explicitly put in the newlines

24、用于条件赋值的三元运算符这是另一种使你代码变得简洁,同时保持可读性的方法:

[on_true] if [expression] else [on_false]

一个简单的例子如下:

x = “Success!” if (y == 2) else “Failed!”

25、统计元素的出现次数

可以使用Collections依赖包中的Counter方法来获得一个包含列表中所有惟一元素计数的字典:

from collections import Counter

mylist = [1, 1, 2, 3, 4, 5, 5, 5, 6, 6]

c = Counter(mylist)

print©

Counter({1: 2, 2: 1, 3: 1, 4: 1, 5: 3, 6: 2})

And it works on strings too:

print(Counter(“aaaaabbbbbccccc”))

Counter({‘a’: 5, ‘b’: 5, ‘c’: 5})

26、比较运算符的连接可以在python中链接比较运算符,从而使代码更简洁,可读性更强:

x = 10

Instead of:

if x > 5 and x < 15:

print(“Yes”)

yes

You can also write:

if 5 < x < 15:

print(“Yes”)

Yes

27、加入色彩

通过 Colorama 依赖包,可以在终端中添加更多色彩:

from colorama import Fore, Back, Style

print(Fore.RED + ‘some red text’)

print(Back.GREEN + ‘and with a green background’)

print(Style.DIM + ‘and in dim text’)

print(Style.RESET_ALL)

print(‘back to normal now’)

28、日期处理

python-dateutil模块为标准的datetime模块提供了强大的扩展。首先安装该模块:

pip3 install python-dateutil

你可以用这个库做很多很酷的事情。我讲把我认为特别有用的一个功能作为示例:日志文件中日期的模糊解析等。如下:

from dateutil.parser import parse

做了那么多年开发,自学了很多门编程语言,我很明白学习资源对于学一门新语言的重要性,这些年也收藏了不少的Python干货,对我来说这些东西确实已经用不到了,但对于准备自学Python的人来说,或许它就是一个宝藏,可以给你省去很多的时间和精力。

别在网上瞎学了,我最近也做了一些资源的更新,只要你是我的粉丝,这期福利你都可拿走。

我先来介绍一下这些东西怎么用,文末抱走。


(1)Python所有方向的学习路线(新版)

这是我花了几天的时间去把Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

最近我才对这些路线做了一下新的更新,知识体系更全面了。

在这里插入图片描述

(2)Python学习视频

包含了Python入门、爬虫、数据分析和web开发的学习视频,总共100多个,虽然没有那么全面,但是对于入门来说是没问题的,学完这些之后,你可以按照我上面的学习路线去网上找其他的知识资源进行进阶。

在这里插入图片描述

(3)100多个练手项目

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。

在这里插入图片描述

(4)200多本电子书

这些年我也收藏了很多电子书,大概200多本,有时候带实体书不方便的话,我就会去打开电子书看看,书籍可不一定比视频教程差,尤其是权威的技术书籍。

基本上主流的和经典的都有,这里我就不放图了,版权问题,个人看看是没有问题的。

(5)Python知识点汇总

知识点汇总有点像学习路线,但与学习路线不同的点就在于,知识点汇总更为细致,里面包含了对具体知识点的简单说明,而我们的学习路线则更为抽象和简单,只是为了方便大家只是某个领域你应该学习哪些技术栈。

在这里插入图片描述

(6)其他资料

还有其他的一些东西,比如说我自己出的Python入门图文类教程,没有电脑的时候用手机也可以学习知识,学会了理论之后再去敲代码实践验证,还有Python中文版的库资料、MySQL和HTML标签大全等等,这些都是可以送给粉丝们的东西。

在这里插入图片描述

这些都不是什么非常值钱的东西,但对于没有资源或者资源不是很好的学习者来说确实很不错,你要是用得到的话都可以直接抱走,关注过我的人都知道,这些都是可以拿到的。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 26
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值