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
posted @ 2022-03-04 09:12  小杨的冥想课  阅读(34)  评论(0编辑  收藏  举报