20个Python使用小技巧,建议收藏!

1. 列表解析式

在Python中,我们可以使用列表解析式来简化列表的创建过程,代码如下:

numbers = [1, 2, 3, 4, 5]

squared_numbers = [num ** 2 for num in numbers]

print(squared_numbers) #[1, 4, 9, 16, 25]

这个列表解析式首先将numbers列表中的每个数字都提取出来(for num in numbers),然后将提取出来的数字进行平方运算(num ** 2),最后赋值给squared_numbers列表中的元素。

1.1. 使用if过滤元素

我们还可以在列表解析式中使用if语句,根据条件过滤某些元素,代码如下:

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

even_numbers = [num for num in numbers if num % 2 == 0]

print(even_numbers) #[2, 4, 6]

这个列表解析式首先将numbers列表中的每个数字都提取出来(for num in numbers),然后使用if语句判断数字是否为偶数(num % 2 == 0),最后将偶数赋值给even_numbers列表中的元素。

2. 使用enumerate函数

在Python中,我们可以使用enumerate函数来遍历列表并获得元素的索引,代码如下:

fruits = ['apple', 'banana', 'orange']

for index, fruit in enumerate(fruits):

print(index, fruit)

使用enumerate函数可以遍历fruits列表中的每个元素,并且返回索引值(index)和对应的元素值(fruit)。

3. 使用zip函数

在Python中,我们可以使用zip函数将多个列表打包成一个元组列表,代码如下:

names = ['Tom', 'Jack', 'Lily']

ages = [18, 20, 19]

for name, age in zip(names, ages):

print(name, age)

使用zip函数可以将names列表和ages列表的对应元素打包成一个元组,然后一次性遍历所有的元组。

4. 使用collections模块的Counter函数

在Python中,我们可以使用collections模块的Counter函数来统计列表中每个元素出现的次数,代码如下:

from collections import Counter

fruits = ['apple', 'banana', 'orange', 'apple', 'orange', 'banana', 'apple']

fruit_count = Counter(fruits)

print(fruit_count) #Counter({'apple': 3, 'banana': 2, 'orange': 2})

使用Counter函数可以统计fruits列表中每个元素出现的次数,并且以字典的形式返回结果。

5. 使用sorted函数进行排序

在Python中,我们可以使用sorted函数对列表进行排序,代码如下:

numbers = [5, 2, 1, 4, 3]

sorted_numbers = sorted(numbers)

print(sorted_numbers) #[1, 2, 3, 4, 5]

使用sorted函数可以对numbers列表进行升序排序,并且返回一个新的排好序的列表。

5.1. 对字典进行排序

除了对列表进行排序,我们还可以使用sorted函数对字典进行排序,代码如下:

students = {'Tom': 18, 'Jack': 20, 'Lily': 19}

sorted_students = sorted(students.items(), key=lambda x: x[1])

print(sorted_students) #[('Tom', 18), ('Lily', 19), ('Jack', 20)]

使用sorted函数对字典进行排序需要使用字典的items方法将字典转化为元组列表,然后通过key参数指定按照元组中第二个元素(即字典中的值)进行排序。

6. 使用map函数对列表进行操作

在Python中,我们可以使用map函数对列表中的元素进行操作并返回一个新的列表,代码如下:

numbers = [1, 2, 3, 4, 5]

squared_numbers = list(map(lambda x: x ** 2, numbers))

print(squared_numbers) #[1, 4, 9, 16, 25]

使用map函数可以将numbers列表中的每个元素都进行平方运算,并且返回一个新的列表。

6.1. 使用zip和map函数进行列表相加

除了对列表中的元素进行操作,我们还可以使用zip函数将两个列表进行打包,并且使用map函数对打包后的元素进行相加,代码如下:

a = [1, 2, 3, 4, 5]

b = [5, 4, 3, 2, 1]

c = list(map(lambda x: x[0] + x[1], zip(a, b)))

print(c) #[6, 6, 6, 6, 6]

使用zip函数可以将a列表和b列表的对应元素打包成一个元组,然后使用map函数对每个元组中的两个元素进行相加运算,最后返回一个新的列表。

7. 使用reduce函数进行累加

在Python中,我们可以使用reduce函数对列表中的元素进行累加操作,代码如下:

from functools import reduce

numbers = [1, 2, 3, 4, 5]

sum_of_numbers = reduce(lambda x, y: x + y, numbers)

print(sum_of_numbers) #15

使用reduce函数可以对numbers列表中的所有元素进行累加操作,并且返回一个累加结果。

8. 使用try except语句处理异常

在Python中,我们可以使用try except语句来捕获代码中的异常,并且对异常进行处理,代码如下:

try:

x = 1 / 0

except ZeroDivisionError:

print('Divided by zero!')

使用try except语句可以捕获代码中的异常,并且在出现异常的情况下执行except语句中的代码而不是直接停止程序。

9. 使用with语句打开文件

在Python中,我们可以使用with语句来打开文件并且自动关闭文件,代码如下:

with open('example.txt', 'r') as file:

for line in file:

print(line)

使用with语句可以打开文件并且自动关闭文件,在这个例子中,我们使用了with语句来打开example.txt文件并且遍历文件中的每一行内容。

10. 使用装饰器@staticmethod

在Python中,我们可以使用装饰器@staticmethod来定义静态方法,代码如下:

class MyClass:

@staticmethod

def my_static_method():

print('This is a static method.')

MyClass.my_static_method()

使用@staticmethod装饰器可以定义一个静态方法,静态方法可以在不实例化类的情况下调用,并且不需要self参数。

11. 使用装饰器@classmethod

在Python中,我们可以使用装饰器@classmethod来定义类方法,代码如下:

class MyClass:

@classmethod

def my_class_method(cls):

print('This is a class method.')

MyClass.my_class_method()

使用@classmethod装饰器可以定义一个类方法,类方法可以在不实例化类的情况下调用,并且第一个参数必须是cls。

12. 使用装饰器@property

在Python中,我们可以使用装饰器@property来定义属性,代码如下:

class MyClass:

def __init__(self, value):

self._value = value

@property

def value(self):

return self._value

my_object = MyClass(10)

print(my_object.value)

使用@property装饰器可以定义一个只读属性,只读属性可以在不使用括号的情况下直接调用。

13. 使用装饰器@setter

除了使用@property装饰器定义只读属性,我们还可以使用装饰器@setter来定义可读写的属性,代码如下:

class MyClass:

def __init__(self, value):

self._value = value

@property

def value(self):

return self._value

@value.setter

def value(self, new_value):

self._value = new_value

my_object = MyClass(10)

print(my_object.value)

my_object.value = 20

print(my_object.value)

使用@setter装饰器可以定义一个可读写的属性,可读写的属性可以在赋值的情况下进行修改。

14. 使用format字符串格式化输出

在Python中,我们可以使用format方法来格式化字符串的输出,代码如下:

name = 'Tom'

age = 18

message = 'My name is {0} and I am {1} years old.'.format(name, age)

print(message) #My name is Tom and I am 18 years old.

使用format方法可以将字符串中的占位符动态替换为对应的变量值。

14.1. 格式化输出字典

除了格式化字符串的输出,我们还可以使用format方法来格式化输出字典,代码如下:

person = {'name': 'Tom', 'age': 18}

message = 'My name is {name} and I am {age} years old.'.format(**person)

print(message) #My name is Tom and I am 18 years old.

使用format方法来格式化输出字典需要在变量名前加上花括号,并且使用**运算符传递字典。

15. 使用f-string字符串格式化输出

在Python 3.6及以上版本中,我们可以使用f-string来格式化字符串的输出,代码如下:

name = 'Tom'

age = 18

message = f'My name is {name} and I am {age} years old.'

print(message) #My name is Tom and I am 18 years old.

f-string可以在字符串中直接使用变量名,并且自动将变量转化为字符串。

16. 使用虚拟环境

在Python中,我们可以使用虚拟环境来隔离不同的项目和环境,代码如下:

python -m venv myenv

source myenv/bin/activate

使用虚拟环境可以避免项目和环境的混乱,以及避免因为依赖不一致导致的问题。

17. 使用pip包管理器

在Python中,我们可以使用pip包管理器来安装、升级、卸载Python包,代码如下:

pip install package_name

pip install --upgrade package_name

pip uninstall package_name

使用pip包管理器可以方便地安装、升级和卸载Python包,同时也可以查看安装的包的版本信息。

18. 使用virtualenvwrapper来管理虚拟环境

除了使用虚拟环境来隔离不同的项目和环境,我们还可以使用virtualenvwrapper来更加方便地管理虚拟环境,代码如下:

pip install virtualenvwrapper

export WORKON_HOME=~/Envs

source /usr/local/bin/virtualenvwrapper.sh

mkvirtualenv myenv

workon myenv

使用virtualenvwrapper可以更加方便地创建、切换、删除虚拟环境,并且可以方便地管理虚拟环境。

19. 使用logging模块输出日志

在Python中,我们可以使用logging模块来输出日志,代码如下:

import logging

logging.basicConfig(filename='example.log', level=logging.INFO)

logging.info('This is a log message.')

使用logging模块可以方便地输出日志,在这个例子中,我们使用logging模块输出了一个信息级别的日志信息。

20. 使用unittest模块进行单元测试

在Python中,我们可以使用unittest模块进行单元测试,代码如下:

import unittest

class MyTest(unittest.TestCase):

def test_my_function(self):

self.assertEqual(my_function(1), 2)

self.assertEqual(my_function(2), 3)

if __name__ == '__main__':

unittest.main()

使用unittest模块可以方便地进行单元测试,在这个例子中,我们使用unittest模块测试了一个名为my_function的函数。

后端开发标签