🤵♂️ 个人主页: @AI_magician 📡主页地址: 作者简介:CSDN内容合伙人,全栈领域优质创作者。 👨💻景愿:旨在于能和更多的热爱计算机的伙伴一起成长!!🐱🏍 🙋♂️声明:本人目前大学就读于大二,研究兴趣方向人工智能&硬件(虽然硬件还没开始玩,但一直很感兴趣!希望大佬带带)
在使用python,其实有着许许多多所不为人知的python技巧,这些小技巧可以让代码更简洁高效,应该多加利用! 这里就和分享99个Python的小技巧 (持续更新!!!!)
for i, v in enumerate(list_name):
print(i, v)
from collections import defaultdict
d = defaultdict(list) # 默认值
d['a'].append(1)
print(d) # {'a': [1]}
names = ['a', 'b']
ages = [20, 30]
for name, age in zip(names, ages): # 变成元组对
print(name, age)
for i in reversed(range(1, 10)):
print(i)
list_with_duplicates = [1, 2, 1, 3]
list_without_duplicates = list(set(list_with_duplicates))
with open('file.txt') as f:
data = f.read()
文件会在with代码块结束后自动关闭。
squares = [x**2 for x in range(1, 6)]
print(squares) # [1, 4, 9, 16, 25]
squares = {x: x**2 for x in range(1, 6)}
print(squares) # {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
def uppercase_decorator(func):
def wrapper():
result = func()
return result.upper()
return wrapper
@uppercase_decorator # 实现一个大写装饰器,对所有返回为string的大写
def greet():
return "hello"
print(greet()) # "HELLO"
def fibonacci():
a, b = 0, 1
while True:
yield a
a, b = b, a + b
fib = fibonacci()
print(next(fib)) # 0
print(next(fib)) # 1
print(next(fib)) # 1
print(next(fib)) # 2
from collections import Counter
fruits = ['apple', 'banana', 'orange', 'apple', 'banana', 'apple']
fruit_counts = Counter(fruits)
print(fruit_counts)
# 输出:
# Counter({'apple': 3, 'banana': 2, 'orange': 1})
import itertools
# 排列组合
letters = ['a', 'b', 'c']
perms = itertools.permutations(letters, 2)
print(list(perms)) # [('a', 'b'), ('a', 'c'), ('b', 'a'), ('b', 'c'), ('c', 'a'), ('c', 'b')]
# 无限迭代器
count = itertools.count(start=1, step=2)
print(next(count)) # 1
print(next(count)) # 3
print(next(count)) # 5
import logging
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')
logging.debug('This is a debug message')
logging.info('This is an info message')
logging.warning('This is a warning message')
logging.error('This is an error message')
logging.critical('This is a critical message')
通过使用乘法运算符 *
来复制列表中的元素来实现的。下面是一个示例,展示了如何使用 [None] * 3
创建一个包含3个 None
元素的列表:
my_list = [None] * 3
print(my_list)
输出:
[None, None, None]
def main():
print("Running as main program")
if __name__ == "__main__":
main()
module_name = input("Enter module name: ")
module = __import__(module_name)
x = 50
print(locals())
# {'x': 50}
print(globals())
# {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x7f9c4c4c4e80>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, 'x': 50}
import sys
sys.setrecursionlimit(2000)
import os
print(os.name)
# 等同于
print(__import__('os').name)
def func():
__tracebackhide__ = True
raise Exception("hidden")
func() # No traceback
if __debug__:
print("Running in debug mode")
class Meta(type):
pass
class MyClass(object):
__metaclass__ = Meta
class Point:
def __del__(self):
print("Point destroyed")
class Point:
def __getattr__(self, attr):
...
def __setattr__(self, attr, value):
...
class Point:
def __iter__(self):
...
def __next__(self):
...
class Point:
def __enter__(self):
...
def __exit__(self, exc_type, exc_value, traceback):
...
print(1,2,3)
# 1 2 3
print("{:10}".format(123))
# " 123"
print("{:^10}".format(123))
# " 123 "
print("{:*>10}".format(123))
# "*****123"
.startswith()
和 .endswith()
来检查字符串。" Hello".startswith("H")
# True
"Hello".endswith("o")
# True
dict.get()
来获取字典值,避免KeyError。d = {"name": "John"}
d.get("name") # John
d.get("age") # None
else
来代替flag
变量。for n in range(2, 10):
for x in range(2, n):
if n % x == 0:
break
else:
print(n)
这些小技巧可以让代码更简洁高效,多加利用!