2024年想学好python?这18条学习技巧你一定要掌握。能甩别人两条街。


**尽量使用 Inline if statement**


大多数情况下,我们在条件之后只有一个语句,因此使用Inline if statement 可以帮助我们编写更简洁的代码。举例如下,一般的写法为:



name = “ali”
age = 22

bad practices

if name:
print(name)
if name and age > 18:
print(“user is verified”)


但是更好的处理方法如下:



a better approach

print(name if name else “”)
“”" here you have to define the else condition too"“”

good practice

name and print(name)
age > 18 and name and print(“user is verified”)


**删除list中的重复元素**


我们不需要遍历整个list列表来检查重复元素,我们可以简单地使用 set() 来删除重复元素,代码如下:



lst = [1, 2, 3, 4, 3, 4, 4, 5, 6, 3, 1, 6, 7, 9, 4, 0]
print(lst)
unique_lst = list(set(lst))
print(unique_lst)


**找到list中重复最多的元素**


在Python中可以使用 max( ) 函数并传递 list.count 作为key,即可找出列表list中重复次数最多的元素,代码如下:



lst = [1, 2, 3, 4, 3, 4, 4, 5, 6, 3, 1, 6, 7, 9, 4, 0]
most_repeated_item = max(lst, key=lst.count)
print(most_repeated_item)


**list 生成式**


Python中我最喜欢的功能就是list comprehensions , 这个特性可以使我们编写非常简洁功能强大的代码,而且这些代码读起来几乎像自然语言一样通俗易懂。举例如下:



numbers = [1,2,3,4,5,6,7]
evens = [x for x in numbers if x % 2 is 0]
odds = [y for y in numbers if y not in evens]
cities = [‘London’, ‘Dublin’, ‘Oslo’]
def visit(city):
print("Welcome to "+city)
for city in cities:
visit(city)


**使用\*args传递多个参数**


在Python中我们可以使用\*args来向函数传递多个参数,举例如下:



def sum_of_squares(n1, n2)
return n1**2 + n2**2
print(sum_of_squares(2,3))

output: 13

“”"
what ever if you want to pass, multiple args to the function
as n number of args. so let’s make it dynamic.
“”"
def sum_of_squares(*args):
return sum([item**2 for item in args])

now you can pass as many parameters as you want

print(sum_of_squares(2, 3, 4))
print(sum_of_squares(2, 3, 4, 5, 6))


**在循环时处理下标**


有时我们在工作中,想要获得循环中元素的下标,一般来说,比较优雅的写法如下:



lst = [“blue”, “lightblue”, “pink”, “orange”, “red”]
for idx, item in enumerate(lst):
print(idx, item)


**拼接list中多个元素**


在Python中一般使用Join() 函数来将list中所有元素拼接到一起,当然我们也可以在拼接的时候添加拼接符号,样例如下:



names = [“john”, “sara”, “jim”, “rock”]
print(", ".join(names))


**将两个字典进行合并**


在Python中我们可以使用{\*\*dict\_name, \*\*dict\_name2, … }将多个字典进行合并,样例如下:



d1 = {“v1”: 22, “v2”: 33}
d2 = {“v2”: 44, “v3”: 55}
d3 = {**d1, **d2}
print(d3)


结果如下:



{‘v1’: 22, ‘v2’: 44, ‘v3’: 55}


**使用两个list生成一个字典**


在Python中,如果我们需要将两个列表中对应的元素组成字典,那么我们可以使用 zip 功能来方便地做到这一点。代码如下:



keys = [‘a’, ‘b’, ‘c’]
vals = [1, 2, 3]
zipped = dict(zip(keys, vals))


**字典按照value进行排序**


在Python中我们使用sorted()函数来按照字典的value来对其进行排序.代码如下:



d = {
“v1”: 80,
“v2”: 20,
“v3”: 40,
“v4”: 20,
“v5”: 10,
}
sorted_d = dict(sorted(d.items(), key=lambda item: item[1]))
print(sorted_d)


当然我们也可以使用itemgetter( )来替代上述 lambda函数,代码如下:



from operator import itemgetter
sorted_d = dict(sorted(d.items(), key=itemgetter(1)))


更进一步,我们也可以通过传递 reverse=True 对其进行降序排序:



sorted_d = dict(sorted(d.items(), key=itemgetter(1), reverse=True))


**Pretty print**


在Python中使用Print()函数,有时候的输出贼拉拉丑陋,此时我们使用pprint可以使输出更加美观,样例如下:



from pprint import pprint
data = {
“name”: “john deo”,
“age”: “22”,
“address”: {“contry”: “canada”, “state”: “an state of canada 😃”, “address”: “street st.34 north 12”},
“attr”: {“verified”: True, “emialaddress”: True},
}
print(data)
pprint(data)


输出如下:



{‘name’: ‘john deo’, ‘age’: ‘22’, ‘address’: {‘contry’: ‘canada’, ‘state’: ‘an state of canada 😃’, ‘address’: ‘street st.34 north 12’}, ‘attr’: {‘verified’: True, ‘emialaddress’: True}}
{‘address’: {‘address’: ‘street st.34 north 12’,
‘contry’: ‘canada’,
‘state’: ‘an state of canada 😃’},
‘age’: ‘22’,
‘attr’: {‘emialaddress’: True, ‘verified’: True},
‘name’: ‘john deo’}


可见使用pprint函数可以让字典的输出更加容易阅读


**反转列表**


Python 中通常有两种反转列表的方法:切片或 reverse() 函数调用。这两种方法都可以反转列表,但需要注意的是内置函数 reverse() 会更改原始列表,而切片方法会创建一个新列表。


但是他们的表现呢?哪种方式更有效?让我们看一下下面的例子:



使用切片

$ python -m timeit -n 1000000 -s ‘import numpy as np’ ‘mylist=list(np.arange(0, 200))’ ‘mylist[::-1]’
1000000 loops, best of 5: 15.6 usec per loop

使用reverse()

$ python -m timeit -n 1000000 -s ‘import numpy as np’ ‘mylist=list(np.arange(0, 200))’ ‘mylist.reverse()’
1000000 loops, best of 5: 10.7 usec per loop


这两种方法都可以反转列表,但需要注意的是内置函数 reverse() 会更改原始列表,而切片方法会创建一个新列表。


显然,内置函数 reverse() 比列表切片方法更快!


#### 一、Python所有方向的学习路线


Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。![在这里插入图片描述](https://img-blog.csdnimg.cn/8a20de9e31f144dfba0e4996caded17d.png)


#### 二、Python必备开发工具


![在这里插入图片描述](https://img-blog.csdnimg.cn/e0452e0b045c4a17b6af25b9b41d1063.png)


#### 三、精品Python学习书籍


当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/904cb6a6cf3944f399edd97fed156269.png)


#### 四、Python视频合集




## 写在最后

**在结束之际,我想重申的是,学习并非如攀登险峻高峰,而是如滴水穿石般的持久累积。尤其当我们步入工作岗位之后,持之以恒的学习变得愈发不易,如同在茫茫大海中独自划舟,稍有松懈便可能被巨浪吞噬。然而,对于我们程序员而言,学习是生存之本,是我们在激烈市场竞争中立于不败之地的关键。一旦停止学习,我们便如同逆水行舟,不进则退,终将被时代的洪流所淘汰。因此,不断汲取新知识,不仅是对自己的提升,更是对自己的一份珍贵投资。让我们不断磨砺自己,与时代共同进步,书写属于我们的辉煌篇章。**


需要完整版PDF学习资源私我



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

**[需要这份系统化资料的朋友,可以点击这里获取](https://bbs.csdn.net/topics/618540462)**

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值