引言:无论你是一名初学者还是有一定经验的开发者,这些技巧都能帮助你更好地利用Python来解决问题、提高效率和写出更干净、可维护的代码。无论你是数据科学家、Web开发者、自动化脚本编写者还是其他领域的从业者,这些技巧都能对你有所帮助。
目录
处理用户的多个输入
处理多个条件语句
交换变量
判断字符串是否为回文串
Pretty print
两个list生成一个字典
将两个字典进行合并
删除list中的重复元素
找到list中重复最多的元素
list 生成式
在循环中使用下标
list中多个元素拼接
反转列表
处理用户的多个输入
有时我们需要从用户那里获得多个输入,以便使用循环或任何迭代
# bad
n1 = input("请输入 : ")
n2 = input("请输入 : ")
n2 = input("请输入 : ")
print(n1, n2, n3)
如果用户输入内容的同时加入一个分隔符,例如逗号或分号,你可以传递分隔符作为split
方法的参数。例如,如果用户使用逗号分隔单词,你可以这样处理:
# good
user_input = input("请输入多个单词,用空格分隔:")
words = user_input.split()
print("你输入的单词是:")
for word in words:
print(word)
处理多个条件语句
age= 18
price = 50
# bad
if age== 18 and price < 100:
print("Yes")
如果我们在代码中需要检查多个条件语句,此时我们可以使用 all() 或any() 函数来实现我们的目标。一般来说, 当我们有多个 and 条件时使用 all(),当我们有多个 or 条件时使用 any()。
# good
conditions = [
age == 18,
price < 100,
]
if all(conditions):
print("Yes")
如果是满足条件之一的话,我们也可以用any()
# good
conditions = [
age == 18,
price < 100,
]
if any(conditions):
print("Yes")
交换变量
这个就比较老生常谈了,python特有的机制使得在转换变量时不用中间变量
# bad
temp = v1
v1 = v2
v2 = temp
而是可以直接交换:
# good
v1, v2 = v2, v1
判断字符串是否为回文串
做这个判断的方式之一是比较它与它的反转是否相同。如果它们相同,那么该字符串就是回文串
而将字符串进行反转最简单的实现方式为 [::-1] ,比如:
print("aaahhhaaabbb"[::-1])
然后只需在原本的字符串中尝试寻找是否有翻转后的字符串,因为长度相等,如果找到则必然是其本身。
v1 = "asdfdsa"
v2 = "master er"
print(v1.find(v1[::-1]) == 0) # True
print(v1.find(v2[::-1]) == 0) # False
tips:find() 用于查找子字符串在给定字符串中的第一次出现的位置。如果找到了子字符串,它返回子字符串的起始索引;如果未找到,它返回 -1。
Pretty print
处理 JSON 或 XML 数据时,Pretty print 可以将其格式化为易读的方式,也可以自动格式化代码,使其符合编程规范和风格指南,提高代码的可读性
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'}
两个list生成一个字典
如果我们需要将两个列表中对应的元素组成字典,那么我们可以使用 zip 功能来做到这一点
keys = ['a', 'b', 'c']
vals = [1, 2, 3]
zipped = dict(zip(keys, vals))
print(zipped)
# {'a': 1, 'b': 2, 'c': 3}
将两个字典进行合并
可以使用{**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中的重复元素
我们不需要遍历整个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 生成式
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 = ['beijing', 'shanghai', 'tianjin']
print(evens)
print(odds)
for city in cities:
print("Welcome to "+city)
# 结果
[2, 4, 6]
[1, 3, 5, 7]
Welcome to beijing
Welcome to shanghai
Welcome to tianjin
在循环中使用下标
如果在一个循环里想要获得循环中元素的下标,一般来说,比较优雅的写法是使用enumerate,代码如下:
lst = ["blue", "yellow", "pink", "orange", "red"]
for idx, item in enumerate(lst):
print(idx, item)
# 结果
0 blue
1 yellow
2 pink
3 orange
4 red
list中多个元素拼接
使用join() 函数来添加拼接符将list中所有元素拼接到一起
names = ["aaa", "bbb", "ccc", "ddd", "eee"]
print(", ".join(names))
# aaa, bbb, ccc, ddd, eee
反转列表
Python 中通常有两种反转列表的方法:切片或 reverse() 函数调用。这两种方法都可以反转列表,但需要注意的是内置函数 reverse() 会更改原始列表,而切片方法会创建一个新列表。
import numpy as np
mylist=list(np.arange(0, 200))
mylist[::-1]
# 15.6 usec per loop
mylist.reverse()
# 10.7 usec per loop
显然,内置函数 reverse() 比列表切片方法更快
希望这些技巧能够为大家提供一些新的思路或者坚持学习的动力
欢迎收藏、评论交流,转载标明出处。
-----------------------
2023.09.25