前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >15个Stack Overflow上回答的最多的Python技巧

15个Stack Overflow上回答的最多的Python技巧

作者头像
deephub
发布2023-08-30 09:08:36
2900
发布2023-08-30 09:08:36
举报
文章被收录于专栏:DeepHub IMBA

Python是一种高级编程语言。由于其可读性和效率,它已成为全球开发人员的热门选择。但是与任何语言一样,有一些方法可以利用Python的特性来生成更干净、更高效和更Python化的代码。

本文将整理15个Python技巧,这些技巧都是Stack Overflow上回答最多的问题,并且可以帮你提高代码质量。

1、F-Strings

在Python 3.6中引入的F-Strings提供了一种简洁方便的方式来将表达式嵌入字符串中进行格式化。它比% formatting和str.format()都快并且更易读,所以推荐使用它。

以下是如何使用它们的方法:

代码语言:javascript
复制
 name = "John"
 age = 24
 
 print(f"My name is {name} and I'm {age} years old.")
 
 Output:
 My name is John and I'm 24 years old.

2、列表推导式

当您希望基于现有列表的值创建新列表时,列表推导式提供了更短的语法。它可以使代码更具可读性和效率。

例如:

代码语言:javascript
复制
 numbers = [1, 2, 3, 4, 5]
 
 #List comprehension
 squares = [n**2 for n in numbers]
 
 print(squares)
 
 Output:
 [1, 4, 9, 16, 25]

3、链式比较运算符

Python允许链式比较运算符,这可以使代码更具可读性和整洁性。

例如:

代码语言:javascript
复制
 #Chain comparison
 x = 10
 print(1 < x < 20)  
 
 # Output: 
 True

4、enumerate

当我们同时需要列表项的索引和值时,可以使用enumerate()函数,而不是创建一个单独的变量。

例如:

代码语言:javascript
复制
 fruits = ["apple", "banana", "cherry"]
 
 for i, fruit in enumerate(fruits):
     print(f"Index: {i}, Fruit: {fruit}")
 
 
 # Output:
 Index: 0, Fruit: apple
 Index: 1, Fruit: banana
 Index: 2, Fruit: cherry

5、zip

zip()函数可以同时遍历多个列表,这在处理相同长度的列表时非常方便。

代码语言:javascript
复制
 list1 = [1, 2, 3]
 list2 = ['a', 'b', 'c']
 
 for num, letter in zip(list1, list2):
     print(f"Number: {num}, Letter: {letter}")
 
 # Output:
 Number: 1, Letter: a
 Number: 2, Letter: b
 Number: 3, Letter: c

6、在循环中使用else子句

在Python中,else子句可以与循环一起使用。else块中的代码在循环结束后执行,除非循环被break语句终止。

代码语言:javascript
复制
 for i in range(5):
     if i == 10:
         break
 else:
     print("Loop finished successfully.")
 
 # Output:
 Loop finished successfully.

7、defaultdict

Python中的defaultdict是一个容器,它为不存在的键提供默认值,这可以避免KeyError。

代码语言:javascript
复制
 from collections import defaultdict
 d = defaultdict(int)
 
 print(d["nonexistent_key"])  
 
 # Output: 
 0

8、使用set

Python中的集合以哈希表的形式实现,这为成员测试提供了恒定的时间复杂度。如果需要测试一个项是否存在于一个大型项目集合中,可以使用集合替代列表。

代码语言:javascript
复制
 items = set([1, 2, 3, 4, 5])
 print(3 in items)  
 
 # Output: 
 True

9、' name == " main " '

在python中,这行代码确保在python文件作为脚本运行时运行代码的某些部分,而不是在它作为模块导入时运行。

代码语言:javascript
复制
 if __name__ == "__main__":
     print("This code runs when the file is executed as a script.")

尤其是在windows下的多线程一定要加上这句话,比如pytorch的dataloader的num_worker大于1的话大概率的报错来自于没加这句话

10、使用*args和**kwargs

*args和**kwargs可以让函数传递可变数量的参数。*args用于传递非关键字参数,而**kwargs用于传递关键字参数。

代码语言:javascript
复制
 def func(*args, **kwargs):
     for arg in args:
         print(arg)
     for key, value in kwargs.items():
         print(f"{key}: {value}")
 
 func(1, 2, 3, a=4, b=5)
 
 
 # Output:
 1
 2
 3
 a: 4
 b: 5

11、try/except/else/finally

Python的try/except/else/finally结构允许捕获和处理异常,在没有异常发生时执行代码,并且不管是否发生异常都可以清理资源。

代码语言:javascript
复制
 try:
     # Code that may raise an exception
 except Exception as e:
     # Code that runs when an exception occurs
 else:
     # Code that runs if no exception occurs
 finally:
     # Code that runs no matter what

这里的else的用法与循环中类似,在某些特殊的情况下非常有用

12、使用列表切片

Python中的列表切片可以访问列表项的子集。还可以使用它来反转列表或克隆列表。

代码语言:javascript
复制
 numbers = [1, 2, 3, 4, 5]
 
 print(numbers[1:3])
 print(numbers[::-1])  
 
 # Output: 
 [2, 3]
 [5, 4, 3, 2, 1]

13、使用' isinstance() '进行类型检查

在Python中,isinstance()函数检查一个对象是某个类的实例还是类的元组。

代码语言:javascript
复制
 print(isinstance(1, int))  
 
 # Output: 
 True

14、使用any()和all()

如果可迭代对象中至少有一个元素为真,则any()函数返回True,而all()仅当所有元素为真时返回True。

代码语言:javascript
复制
 numbers = [1, 2, 3, 0]
 
 print(any(numbers))  
 print(all(numbers))  
 
 # Output: 
 True
 False

15、collections.Counter

Python中的collections模块提供了内置容器的替代方案。Counter是一个dict子类,用于对可哈希对象进行计数。它是一个集合,其中元素被存储为字典键,它们的计数被存储为字典值。

代码语言:javascript
复制
 from collections import Counter
 
 # list of students in class 'A'
 students = ['Mike', 'John', 'Mike', 'Anna', 'John', 'John']
 counter = Counter(students)
 
 print(counter)
 
 # Output:
 Counter({'John': 3, 'Mike': 2, 'Anna': 1})

上面的代码是计算列表中元素出现频率的一种简单而有效的方法。

总结

Python是一种强大而灵活的语言,它提供了许多特性和技巧。通过利用这些特性可以编写更简洁、更python化的代码,并将自己从无数的Stack Overflow搜索中拯救出来,提高Python技能的最好方法是编写Python代码。

作者:Pralabh Saxena

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-07-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DeepHub IMBA 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、F-Strings
  • 2、列表推导式
  • 3、链式比较运算符
  • 4、enumerate
  • 5、zip
  • 6、在循环中使用else子句
  • 7、defaultdict
  • 8、使用set
  • 9、' name == " main " '
  • 10、使用*args和**kwargs
  • 11、try/except/else/finally
  • 12、使用列表切片
  • 13、使用' isinstance() '进行类型检查
  • 14、使用any()和all()
  • 15、collections.Counter
  • 总结
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档