哈喽兄弟们,今天给大家分享一下Python初学需要知道的100个小技巧~
1、for循环中的else条件
这是一个for-else方法,循环遍历列表时使用else语句。下面举个例子,比如我们想检查一个列表中是否包含奇数。那么可以通过for循环,遍历查找。
numbers = [2, 4, 6, 8, 1]
for number in numbers:
if number % 2 == 1:
print(number)
break
else:
print("No odd numbers")
如果找到了奇数,就会打印该数值,并且执行break语句,跳过else语句。没有的话,就不会执行break语句,而是执行else语句。
2、从列表中获取元素,定义多个变量
my_list = [1, 2, 3, 4, 5]
one, two, three, four, five = my_list
3、使用heapq模块,获取列表中n个最大或最小的元素
import heapq
scores = [51, 33, 64, 87, 91, 75, 15, 49, 33, 82]
print(heapq.nlargest(3, scores)) # [91, 87, 82]
print(heapq.nsmallest(5, scores)) # [15, 33, 33, 49, 51]
4、将列表中的所有元素作为参数传递给函数
我们可以使用 * 号,提取列表中所有的元素
my_list = [1, 2, 3, 4]
print(my_list) # [1, 2, 3, 4]
print(*my_list) # 1 2 3 4
如此便可以将列表中的所有元素,作为参数传递给函数
def sum_of_elements(*arg):
total = 0
for i in arg:
total += i
return total
result = sum_of_elements(*[1, 2, 3, 4])
print(result) # 10
5、获取列表的所有中间元素
_, *elements_in_the_middle, _ = [1, 2, 3, 4, 5, 6, 7, 8]
print(elements_in_the_middle) # [2, 3, 4, 5, 6, 7]
6、使用一行代码赋值多个变量
one, two, three, four = 1, 2, 3, 4
7、列表推导式
只用一行代码,便可完成对数组的迭代以及运算。比如,将列表中的每个数字提高一倍。
numbers = [1, 2, 3, 4, 5]
squared_numbers = [num * num for num in numbers]
print(squared_numbers) # [1, 4, 9, 16, 25]
推导式不仅列表能用,字典、集合、生成器也能使用。下面看一下,使用字典推导式,将字典的值提高一倍。
dictionary = {'a': 4, 'b': 5}
squared_dictionary = {key: num * num for (key, num) in dictionary.items()}
print(squared_dictionary) # {'a': 16, 'b': 25}
8、通过Enum枚举同一标签或一系列常量的集合
枚举是绑定到唯一的常量值的一组符号名称(成员)。在枚举中,成员可以通过身份进行比较,枚举本身可以迭代。
from enum import Enum
class Status(Enum):
NO_STATUS = -1
NOT_STARTED = 0
IN_PROGRESS = 1
COMPLETED = 2
print(Status.IN_PROGRESS.name) # IN_PROGRESS
print(Status.COMPLETED.value) # 2
9、重复字符串
name = "Banana"
print(name * 4) # BananaBananaBananaBanana
10、比较3个数字的大小
如果想比较一个值和其他两个值的大小情况,你可以使用简单的数学表达式。
1 < x < 10
这个是最简单的代数表达式,在Python中也是可以使用的
x = 3
print(1 < x < 10) # True
print(1 < x and x < 10) # True
11、使用1行代码合并字典
first_dictionary = {'name': 'Fan', 'location': 'Guangzhou'}
second_dictionary = {'name': 'Fan', 'surname': 'Xiao', 'location': 'Guangdong, Guangzhou'}
result = first_dictionary | second_dictionary
print(result)
# {'name': 'Fan', 'location': 'Guangdong, Guangzhou', 'surname': 'Xiao'}
12、查找元组中元素的索引
books = ('Atomic habits', 'Ego is the enemy', 'Outliers', 'Mastery')
print(books.index('Mastery')) # 3
13、将字符串转换为字符串列表
假设你在函数中获得输出,原本应该是一个列表,但实际上却是一个字符串。
input = "[1,2,3]"
你可能第一时间会想到使用索引或者正则表达式。实际上,使用ast模块的literal_eval方法就能搞定。
import ast
def string_to_list(string):
return ast.literal_eval(string)
string = "[1, 2, 3]"
my_list = string_to_list(string)
print(my_list) # [1, 2, 3]
string = "[[1, 2, 3],[4, 5, 6]]"
my_list = string_to_list(string)
print(my_list) # [[1, 2, 3], [4, 5, 6]]
14、计算两数差值
计算出2个数字之间的差值
def subtract(a, b):
return a - b
print((subtract(1, 3))) # -2
print((subtract(3, 1))) # 2
上面的这个方法,需要考虑数值的先后顺序。
def subtract(a, b):
return a - b
print((subtract(a=1, b=3))) # -2
print((subtract(b=3, a=1))) # -2
使用命名参数,安排顺序,这样就不会出错了。
15、用一个print()语句打印多个元素
print(1, 2, 3, "a", "z", "this is here", "here is something else")
16、在同一行打印多个元素
print("Hello", end="")
print("World") # HelloWorld
print("Hello", end=" ")
print("World") # Hello World
print('words', 'with', 'commas', 'in', 'between', sep=', ')
# words, with, commas, in, between
17、打印多个值,在每个值之间使用自定义分隔符
print("29", "01", "2022", sep="/") # 29/01/2022
print("name", "domain.com", sep="@") # name@domain.com
18、不能在变量名的开头使用数字
four_letters = "abcd" # this works
4_letters = "abcd" # this doesn’t work
这是Python的变量命名规则
19、不能在变量名的开头使用运算符
+variable = "abcd" # this doesn’t work
20、数字的第一位不能是0
number = 0110 # this doesn't work