Python基础

我需要的python知识


容器

字符串

  • str() 函数:将其他数据类型转换成字符串类型
  • 字符串切片:
# 三个参数,开头,结尾,步长,需要注意的是切片只会到结尾的前一个,不会到结尾所指的那个序号,结尾如果是负数,
# 代表倒数第几个,如-1代表倒数第一个,步长默认为1,正数递增,负数递减。
a = "asasjakjl"
k = a[1:4:2] # k = "aa" 
  • string.split() 方法:
# split方法默认不传入任何参数,默认情况下,会以任意空白字符作为分隔符,如空格和\n。
a, b = input().split() # 一行有多个输入数据,中间是空格,如:1 2
# string.split(",") 消除多输入数据之间的空格 
  • 字符串拼接:
#字符串拼接使用+或*
a = str(123)
b = str(234)
print(a + b) # 输出"123234"
print(a * 2) # 输出"123123"
  • string.replace() 方法:
# replace()方法用来对字符串中的子串进行替换,三个参数,第一个是被替换的,第二个是替换的,第三个是替换个数
# 即string.replace(oldsubstring, newsubstring, times)
a = "今天天气很好,今天天气很好,今天天气很坏"
string.replace("今天天气很好", "今天天气非常好", 2)
print(a) # 输出"今天天气非常好,今天天气非常好,今天天气很坏"
  • len()函数: 用来求字符串长度
  • string.count(substring) 方法:用来统计字符串中子串出现次数
  • string.upper() 方法:将字符串变成大写
  • string.lower() 方法:将字符串变成小写
  • ord() 函数、chr() 函数:实现字符与数字之间的转换
a = 'C'
b = ord(a) # b = 67
c = chr(b) # c = 'C'
# python中不能直接是实现字符间比较,只能通过这两个函数来实现比较,这两个函数是互逆的。

列表

  • 定义
# 有两种定义方法
my_list = ["12121", 2121, "asa"]
my_list = list(122, "121")
  • 增加元素
# append()方法在列表末位追加
# 在列表末尾追加元素
my_list.append("a") #把"a"插入到末尾
# insert()方法插入到指定索引位置
my_list.insert(3,"a") #把"a"插入到第四个元素的位置(从零开始)
# extend()方法把另一个列表追加到该列表末尾
my_list.extend(["as", "asad"])
  • 删除元素
#pop()方法 根据索引删除列表中的元素,并返回被删除的元素,若不指定索引,默认删除并返回列表最后一个元素等价
#于pop(-1)
my_list.pop()
my_list.pop(2)
#del关键字,用于删除索引、切片范围元素、删除整个列表,无返回值
del my_list[index] # 删除单个索引元素 
del my_list[start:end] # 删除切片范围元素
del my_list # 删除整个列表
#remove()方法,根据元素值删除列表中第一个匹配的元素,注意不是根据索引,无返回值。
list.remove(value)
  • max()、min()函数求列表最值
  • my_list().count()方法用于求出列表中某元素出现次数
  • sum()函数 用于对列表元素求和
  • len()函数 用于求出列表长度
  • list.reverse() 翻转列表
  • list.sort()列表排序

元组

  • 定义
#元组可以查,不能修改因此不能使用迭代式,可哈希,用来作为字典key键或者直接交换元素。
#两种定义元组的方法
a = tuple(["assa", 212])
a = ("asas", 212)

#注意
t1 = tuple(1,2,3) 定义错误,tuple里面只能是一个可迭代对象
#如
t1 = tuple([1, 2, 3, 4, 5])
t1 = tuple({1, 2, 3, 4})
t1 = tuple((1, 2, 3, 4))
t1 = tuple(range(1, 20))

集合

  • 定义
# 集合无序且元素唯一,常常用来去重
s1 = set([1,23,])
s1 = {1, 2, 3}
s1 = set(1, 2, 3) #定义错误
  • 集合运算
# | 常用来增加元素
s1 = s1 | {'a'}
# - 
s1 = s1 - s2 # 获得s1中有,而s2中没有的元素
# & 取交集
# ^ 取对称差集,就是所有在s1中不在s2中的元素和所有在s2中而不在s1中的元素
s1 ^ s2
  • 删除元素
#remove()方法,从集合中删除指定值的元素,无返回值
s1.remove(value)
#pop()方法,从集合中随机删除并返回一个元素

字典

  • 定义
  dict = {1:2, 3:8, 4:8, 9:"asas"} #key键唯一
  • 遍历
for i in dict.items():
for i in dict.values():
for i in dict.keys():

迭代式与for循环

  1. 注意区分好是该写迭代式还是该写for循环
  2. 注意区分好是写可迭代对象,还是写多个整型

sorted()函数

#sorted用来处理复杂结构的排序问题
#一个列表里面装多个字典或多个元组,这是常用的一种结构,可以用来排序
role_list = [{"name": "小白", "age":18}, {"name": "小蓝", "age":"64"},{"name":"小黄", "age":"15"},{"name": "小紫", "age":19}]
def func_sort(data):
    return data["age"]
print(sorted(role_list, key = func_sort))
print(sorted(role_list, key = lambda data:data["age"], reverse = False))

student = [('hon', 'A', 15), ('An', 'B', 12), ('Mar', 'B', 15)]
print(student)
a = sorted(student, key = lambda data:data[2])#lambda能看懂就够了,平时不习惯用可以不用。
print(a)

map()函数

#用于对可迭代对象如列表、元组中每一个元素应用指定函数,返回一个迭代器map对象,包含应用函数后的结果
#1.单个可迭代对象 + 内置函数
nums = [1,2,3]
squared = map(lambda x:x**2, nums)
print(list(squared))
str_nums = map(str,nums)
print(list(str_nums))
#2.多个可迭代对象
a = [1, 2, 3]
b = [4, 5, 6]
sum_ab = map(lambda x, y: x + y, a, b)
print(list(sum_ab))

#用例子来学类
class Person:
    __slots__ = ("name", "age", "__weight")
    def __init__(self, name):
        self.name = name
        self.age = 18
        self.__weight = 40
    def sing(self):
        print("小黄会唱歌")
    def __say(self): #私有方法
        print("I'm Alex")
    def get_weight(self):
        self.__say()
        return self.__weight
    def set_weight(self, weight)
        if isinstance(weight, int)
            self.__weight = weight
#slots用来限定类的属性
#私有属性不能被继承
class Programmer(Person):
    def __init__(self, name):
        super().__init__(name)
        self.name = "冰冰"
    def sing(self):
        print("程序员会唱歌")
class Teacher(Person):
    def __init__(self,name):
        super().__init__(name)
        self.name = "小美"
    def sing(self):
        print("老师会唱歌")
    def read(self):
        print("老师会阅读")
class Student(Teacher, Programmer):
    def __init__(self,name):
        super().__init__(name)
        self.name = "小赵"
person = Person("李白")
programmer = Programmer("杜甫")
teacher = Teacher("陆游")
print("programmer: ", programmer.name, programmer.age)
student = Student("ALex")
#多态
def do_something(o):
    o.sing()
do_something(person)
do_something(programmer)
do_something(teacher)
do_something(student)

#__call__()
#触发时机:将对象当作函数调用时触发,方式: 对象()
#参数:至少一个self接收对象,其余根据调用时参数决定

#__len__()
#触发时机:使用len(对象) 的时候触发
#参数:一个参数self
#返回值:必须是一个整型

#__str__()
#触发时机:使用print(对象)或者str(对象)的时候触发
#参数:一个self接收对象
#返回值:必须是字符串类型

#__add__(self, other)
#__sub__(self, other)
#__mul__(self, other)

补充

导包

#这三种都可以
import random
from random import *
from random import randint, choice

if __name__ == '__main':
#用来限制导入的包,当我们直接运行包含该if语句的模块时,会执行if中的代码,带当其他模块导入该模块时,if中的代码不会被执行。

数组简化常用写法

# 单行输入简化代码, 二维数组写法 
a, t, i = int(input()), input(), [[float(y) for y in input().split()] for x in range(12)]
#读入数字,读入分割 
int(input)、input().split()
#一维列表快速输入
a = [int(x) for x in input().split()] 

读写文件

#'a'追加、'r'重写、'w'重读
try:
    f = open(r"C:\Users\Sophi\Desktop\requirements.txt", "r", encoding = "utf-8")
    #text = f.read(10)

    # while True:
    #     text = f.read(20)
    #     print(text)
    #     if not text:
    #         break
    # print(text)
    print(f.readline())
    print(f.readlines())
except Exception as e:
    print(e)
finally:
    if f:
        f.close()
with open(r"C:\Users\Sophi\Desktop\requirements.txt", "r", encoding = "utf-8") as f:
    print(f.read())
f = open(r"C:\Users\Sophi\Desktop\text.txt","w",encoding = "utf-8")
f.write("你好\n")
posted @ 2025-09-03 20:49  Alex039  阅读(13)  评论(2)    收藏  举报