资讯动态

AI大模型之python基础知识

发布时间:2026/10/16 6:35:48 来源:尧图企业网站定制
在学习ai大模型之前先把python的基础知识过一遍。持续更新中……列表列表中的元素不一定是同种类型的数据结构可以包含多种数据类型比如字符串、元祖、字典、数字等等。创建列表的几种方式直接声明。list1[]list2[1,str,2]解析创建这种在项目中用到的比较多。range方法是左闭右开即包含1不包含11list3[valueforvalueinrange(1,11)]转化列表将其他类型的数据结构转为列表类型.str1abclist1list(str1)# 注意输出是[a,b,c]而不是[abc]list2list(range(1,11))# 输出[1,2,3,4,5,6,7,8,9,10]注意不能把int类型的数据转为列表比如num1123list1list(num1)# ❌这种写法是错误会显示TypeError: int object is not iterable。要想把num1转为列表可以先转为字符串123再使用list()方法list2 list(str(num1))原理 list(iterator) 方法的底层逻辑是依次遍历可迭代对象 iterator 的每个元素并把它们塞到一个新列表中。数值列表常用统计计算方法sum(list) 求整个数值列表之和。max(list) :整个数值列表的最大值min(list) :整个数值列表的最小值列表常用方法增append() 方法和 insert() 方法insert() 方法传入第一个参数是索引第二个参数是要插入的元素。使用insert方法把元素插入到索引位置时索引后面的列表元素都向右移动list1[]list1.append(1)# [1]list1.append(2)# [1,2]list1.insert(1,5)# [1,5,2]获取列表切片list[i:j]左闭右开区间省略i,从列表最开头开始省略j一直获取到列表末尾如果i和j都省略则复制整个列表并且新列表和原列表是独立的如果是负数索引则代表从最后往前数。列表切片获取出来的还是一个列表list1[iforiinrange(11)]print(list1[1:3])# [1,2]print(list1[:3])# [0,1,2]print(list1[3:])# [3,4,5,6,7,8,9,10]print(list1[-3:])# [8,9,10] 获取最后三个元素list2list1[:]print(list2)# [0,1,2,3,4,5,6,7,8,9,10],list2和list1是独立的删除元素pop() 方法和 del() 方法pop方法删除末尾的元素,并返回最后一个元素del方法删除时需要一个索引但是不返回这个元素list1[apple,xiaomi,vivo,oppo]elelist1.pop()dellist1[1]print(list1)# [apple, vivo]print(ele)# oppo列表排序和反转列表的 sort() 排序方法和 reverse() 反转方法会永久的改变原列表的排列顺序。sort方法排序只适用于同类型的数据其本质是调用比较符 全局的 sorted() 方法会生成一个新的排好序的列表原列表保持不变注意:sorted方法不是列表的是全局方法因此不能使用像 list.sorted() 这种方法而是这样使用 sorted(list)list1[apple,xiaomi,vivo,oppo]print(list1)# [apple,xiaomi,vivo,oppo]list1.sort()print(list1)# [apple, oppo, vivo, xiaomi],原列表的顺序永久改变list1[apple,xiaomi,vivo,oppo]list2sorted(list1)print(list1)# [apple,xiaomi,vivo,oppo]print(list2)# [apple, oppo, vivo, xiaomi]sort之后是这种结果不是根据字符串长度判断的而是根据Unicode编码比较的。即单词首字母 aovxreverse() 方法是把列表的顺序调换一下位置永久的改变顺序再调用一遍就会恢复原来的顺序list1[apple,xiaomi,vivo,oppo]list1.reverse()# [oppo,vivo,xiaomi,apple]字符串常用方法增使用 或者 join() 方法. join方法常用join() 的用法str.join(sequence).将序列sequence的各个元素用str连接起来形成一个新的字符串list1[apple,xiaomi,vivo,oppo]print(!.join(list1))# 输出apple!xiaomi!vivo!oppojoin()方法的在处理大量字符串的性能要比快2. 删replace() 方法.它会把整个字符串所有的字符都删除或替换rstrip() 删除字符串末尾的空格lstrip() :删除字符串开头的空格strip() :开头和末尾的空格都删除注意字符串属于不可变对象因此使用replace方法其实会生成一个新字符串对象原字符串不变。str1Hello,World!Python,is beautifulstr2str1.replace(,,)print(str1)# Hello,World!Python,is beautifulprint(str2)# HelloWorld!Pythonis beautiful 凡是带,的地方都会被删除字符串切片同列表的切片改字符串属于不可变对象不能直接更改字符串的某个元素否则会报错。不能使用 str1[0] ‘a’ 这种方式因此有两种方法更改字符串拼接或转为列表再转为字符串str1Hello,World!Python,is beautiful# 1.使用字符串拼接替换单个字符str_indexstr1.find(H)str2astr1[str_index1:]print(str2)# aello,World!Python,is beautiful#2.转为列表再替换再转为字符串list_strlist(str1)str_indexlist_str.index(H)list_str[str_index]astr2.join(list_str)print(str2)# aello,World!Python,is beautiful#1.使用字符串拼接将Python改成TypeScriptstr_lenlen(Python)str_indexstr1.find(Python)str2str1[:str_index]TypeScriptstr1[str_indexstr_len1:]print(str2)# 2.使用replace方法str2str1.replace(Python,TypeScript)查使用 find() 方法查找单个字符或字符串找到的话返回索引没找到返回-1.注意find只会查找第一个匹配项找到之后就不再往后查找了str1Hello,World!Python,is beautifulindex1str1.find(P)# 返回12index2str1.find(Python)# 12index3str1.find(python)# -1index4str1.find(Ppp)#-1字符串的一些方法upper() 把字符都变成大写lower() 把字符都变成小写title() 只把开头的字符变成大写元组不能修改的元素组成的列表叫做元组用括号来表示。元组中的元素不可修改但是它可以被遍历、切片、查看元素内容。但是不能修改元组中的值可以把整个元组的值进行修改查看元组中的值中括号索引值元组切片同列表左闭右开区间tuple1(1,2,aaa,True)print(tuple1[0])# 1print(tuple1[1:3])# (2, aaa)tuple1(3,4,5)# 对整个元祖进行修改print(tuple1)# 345字典用大括号包起来的键值对键和值之间用冒号分隔键值对之间用逗号分隔。键的类型可以是字符串、数值、元组等不可变类型必须是可哈希对象因此列表、字典、集合不能做键值可以是任意类型增dict[key]value dict1{name:张三,age:18}print(dict1)dict1[sex]男print(dict1)# {name: 张三, age: 18, sex: 男}删pop(key,default) 和 popitem()pop需要知道要删除的键返回删除键对应的值如果键不存在报KeyError错误popitem不需要传递参数默认删除字典中最后一个元素返回键和值组合成的元组dict1{name:张三,age:18,sex:男}# popvaluedict1.pop(age)# 18print(dict1)# {name:张三,sex:男}# popitemvalue2dict1.popitem()print(value2)# (sex,男) class tupleprint(dict1)# {name:张三,age:18}获取dict[key],注意字典中的key是什么类型此处的key就应该是什么类型遍历常用使用for循环并结合以下方法items() :同时遍历键、值keys() :只遍历键values() :只遍历值dict1{name:张三,age:18,sex:男}forkey,valueindict1.items():print(f{key}-{value})# name-张三 age-18 sex-男forkeyindict1.keys():print(key)# name age sexforvalueindict1.values():print(value)# 张三 18 男更新update(dict) 方法用来更新当前字典,传入的参数是另一个字典或包含键值对可迭代对象元组.传入的参数有三种形式一个字典、关键字参数的形式、可迭代的包含键值对的对象如果dict中的键在当前字典没有的则添加键值对如果有则更新键对应的值dict1{name:张三,age:18,sex:男}dict2{age:20,city:beijing}dict1.update(dict2)print(dict1)# {name: 张三, age: 20, sex: 男, city: beijing}# 包含键值对可迭代对象dict1.update([(career,it),(area,bbb)])print(dict1)#{name: 张三, age: 20, sex: 男, city: beijing, career: it, area: bbb}# 关键字参数的形式dict1.update(age22,areaccc)print(dict1)# {name: 张三, age: 22, sex: 男, city: beijing, career: it, area: ccc}判断ifif elif else多个条件使用and 关键字所有条件都为True时总体才为True;or关键字只要其中一个条件为True结果就是True(not)in关键字用来判断元素是否在容器中这里的容器可以是字符串、列表、元组、集合、字典注意当是字典时判断的是key而不是值。如果想判断值使用字典的 values() 方法dict1{name:张三,age:18,sex:男}print(nameindict1)# Trueprint(张三indict1)# Falseprint(张三indict1.values())# True函数定义def关键字函数名小括号冒号后面的缩进内容函数使用return关键字来返回值调用函数可以需要用一个变量来接收它的返回值如果不写return语句默认返回None;如果只写一个return关键字但后面没有内容也是返回Nonedeffunc_name():return1函数参数传递有两种方式位置参数传递和关键字参数传递使用的这两种可以混用但是位置参数必须在关键字参数前面关键字参数后面不能有位置参数否则会报错deffun_name(name,age,sex):print(f姓名{name},年龄{age},性别{sex})fun_name(zs,18,男)# 位置参数传递fun_name(namezs,age18,sex男)# 关键字参数传递fun_name(zs,age18,sex男)# 位置和关键字参数混用位置参数必须在前关键字参数后面不能有位置参数否则会报错2.1 多个参数时形参和实参的数量不一致时当不知道一个函数要传多少参数时可以使用 **args **或kwargs这两个可装任意参数的大包*args 负责接收任意数量的位置参数打包成元组*代表打包多余的位置参数到名为args的空元组中如何获取这些参数呢使用for循环遍历这些参数**kwargs 负责接收任意数量的关键字参数 打包成字典,代表打包多余的关键字参数到名为kwargs的空字典中如果获取这些参数呢使用for循环结合字典的items方法defposition_arg(a,b,*args):totalabforiinargs:totalireturntotalprint(position_arg(a9,b10))# 19print(position_arg(1,11,14,16))# 42defkeywords_arg(school,**kwargs):all_args{school:school}all_args.update(kwargs)fork,vinall_args.items():print(f{k}-{v})keywords_arg(schoolhaha,productapple,price9999)# school-haha product-apple price-9999keywords_arg(xxx,namezs,age18,sex男)# school-xxx name-zs age-18 sex-男**kwargs还有一个常用的方法结合setattr方法给对象的属性赋值. setattr(object,k,v) 方法用来给对象object设置属性键名是k,值是v如果键不存在则创建如果存在则更新它的值classStudent:passdefset_arg(object,**kwargs):fork,vinkwargs.items():setattr(object,k,v)tStudent()set_arg(t,namezs,age18)print(t.name)# zsprint(t.age)# 18

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑