python零散的小知识点
python零散的小知识点
1.使用heapq模块,获取列表中n个最大或最小的元素
import heapq
scores = [51, 33, 64, 87, 91, 75, 15, 49, 33, 82]
print(heapq.nlargest(3, scores)) # [91, 87, 82] 获取最大的的3个
print(heapq.nsmallest(5, scores)) # [15, 33, 33, 49, 51],获取最小的几个scores
利用切片进行字符串的翻转
a = "GOODmorming"
print(a[::-1])
#输出结果:
#gnimromDOOG
2.*与**作用与含义
-
python中的 * 和 ** ,能够让函数支持任意数量的参数,它们在函数定义和调用中,有着不同的目的
-
一、打包参数
* 的作用:在函数定义中,收集所有位置参数到一个新的元组,并将整个元组赋值给变量args
3.print打印多个值,****在每个值之间使用自定义分隔符
print("29", "01", "2022", sep="/") # 29/01/2022
4.可以使用下划线分割数值较大的数字
print(1000_11_111)
5.合并字典
dictionary_one = {"a": 1, "b": 2}
dictionary_two = {"c": 3, "d": 4}
merged = {**dictionary_one, **dictionary_two} #这不就是打散的意思
print(merged)# {'a': 1, 'b': 2, 'c': 3, 'd': 4}
my_list = [1, 2, 3, 4]
squared = map(lambda x: x ** 2, my_list)
print(list(squared)) # [1, 4, 9, 16]
print(my_list) # [1, 2, 3, 4]
### 7.**在外部直接访问私有属性**
- 在定义属性或方法时,在属性名或者方法名前增加两个下划线,定义的就是私有属性或方法。如果想要在外部访问,那么只需要在名称前面加上 '_类名' 变成 '_类名__名称'。
~~~python
class Engineer:
def __init__(self, name):
self.name = name
self.__starting_salary = 62000
dain = Engineer('Dain')
print(dain._Engineer__starting_salary) # 62000
8.在列表的第一个位置添加一个值
- 如果使用append(),将从列表的最后一个位置插入新值。可以通过使用insert(),来指定插入新元素的索引和数值。那么列表的第一个位置为0,即下标为0。
my_list = [3,4,5]
my_list.append(6)
my_list.insert(0,2)
print(my_list) #输出结果:[2, 3, 4, 5, 6]
my_list = [1, 2, 3, 4]
squared = map(lambda x: x ** 2, my_list)
print(squared,type(squared)) #<map object at 0x000002D04A70B8D0> <class 'map'>
print(list(squared)) # [1, 4, 9, 16]
print(my_list) # [1, 2, 3, 4]
11.range()的step参数
for number in range(1, 10, 3): #起点为1,终点为10(不包含10),步长为3
print(number, end=" ")
# 1 4 7
12使用super()或父类的名称调用父类的初始化
class Parent:
def __init__(self, city, address):
self.city = city
self.address = address
class Child(Parent):
def __init__(self, city, address, university):
super().__init__(city, address)
self.university = university
child = Child('Peking', '海淀', 'Tsinghua University')
print(child.city) # Peking
13.检查字符串是否都是空格
string = " "
result = string.isspace()
print(result) # True 如果只有冒号的话就不行了就是Flase了
14.检查字符串是否都是字母或数字
name = "Pass样word"
print(name.isalnum()) # True
name = "Secure Password "
print(name.isalnum()) # False
name = "S3cur3P4ssw0rd"
print(name.isalnum()) # True
name = "133"
print(name.isalnum()) # True
15.根据参数删除字符
#从右侧删除
string = "This is a sentence with "
print(string.rstrip()) # "This is a sentence with"
string = "this here is a sentence…..,,,,aaaaasd"
print(string.rstrip(".,dsa")) # "this here is a sentence"
#从左侧删除
string = "ffffffffFirst"
print(string.lstrip("f")) # First
16 计算字符串或列表中元素的数量
- 使用collections中的Counter计算字符串或列表中元素的数量
from collections import Counter
result = Counter("Banana")
print(result) # Counter({'a': 3, 'n': 2, 'B': 1})
result = Counter([1, 2, 1, 3, 1, 4, 1, 5, 1, 6])
print(result) # Counter({1: 5, 2: 1, 3: 1, 4: 1, 5: 1, 6: 1})
17.collections模块的Counter(),默认情况下是不会根据元素的频率对它们进行排序的
from collections import Counter
result = Counter([1, 2, 3, 2, 2, 2, 2])
print(result) # Counter({2: 5, 1: 1, 3: 1})
print(result.most_common()) # [(2, 5), (1, 1), (3, 1)]
#查找频数最高的元素
my_list = ['1', 1, 0, 'a', 'b', 2, 'a', 'c', 'a']
print(max(set(my_list), key=my_list.count)) # a
记录学习的点点滴滴