python 基础知识点一

时间:2022-05-15 20:07:12

基础数据类型初始。

数字:int 12,3,45 + - * / **    int: bit_lenth()转化为2进制的最小位数。
% 取余数
ps:type()
字符串转化成数字:int(str) 条件:str必须是数字组成的。
数字转化成字符串:str(int)
字符串:str,python当中凡是用引号引起来的都是字符串。
可相加:字符串的拼接。
可相乘:str * int
bool:布尔值。 True False。bool(int)可以转换为 T or F 。0为T;非0为F

str---->bool :bool(str); s = " " (空字符)---> False;  s = "1"(非空字符)---> True

ig = 0;st ='';l = {};s=[];se=set()

#bool值都为0

s = input("")

if s:

  pass

else:

  pass

字符串的切片(顾头不顾尾)

[首:尾:步长]  步长为1(正向取)一般省略;步长为-1(反向取);步长为2(隔一个取)

s="ABCDKSDFESF"

s1=s[:]   s1=s[0:]   ----> s1="ABCDKSDFESF"

s2 =s[::-1] s2=s[-1::-1]  -----> s2="FSEFDSKDCBA"

字符串常用方法

s ="asDSswWss"
s1 = s.upper() upper() 全部大写
s2 = s.lower() lower() 全部小写
print(s1,s2)
#captalize,swapcase,title
print(name.capitalize()) #首字母大写
print(name.swapcase()) #大小写翻转
msg='taibai say hi'
print(msg.title()) #每个单词的首字母大写 # 内同居中,总长度,空白处填充*
ret2 = a1.center(20,"*")
print(ret2) #数字符串中的元素出现的个数。
# ret3 = a1.count("a",0,4) # 可切片
# print(ret3) a4 = "dkfjdkfasf54"
#startswith 判断是否以...开头
#endswith 判断是否以...结尾
# ret4 = a4.endswith('jdk',3,6) # 顾头不顾尾
# print(ret4) # 返回的是布尔值
# ret5 = a4.startswith("kfj",1,4)
# print(ret5) #寻找字符串中的元素是否存在
# ret6 = a4.find("fjdk",1,6)
# print(ret6) # 返回的找到的元素的索引,如果找不到返回-1 # ret61 = a4.index("fjdk",4,6)
# print(ret61) # 返回的找到的元素的索引,找不到会报错。

#不写默认按照空格分割
#split 以什么分割,最终形成一个列表此列表不含有这个分割的元素。split可以把str 转换为 list.
# ret9 = 'title,Tilte,atre,'.split(',',次数)#不写次数,默认全部.
# print(ret9)
# ret91 = 'title,Tilte,atre,'.rsplit('t',1) rsplit(从右开始分割)
# print(ret91) #join 可以把list(里面要为str) 转换为 str
s=["alse","2","6","9"]
s1 = '+'.join(s)
print(s1)
alse+2+6+9 #format的三种玩法 格式化输出
res='{} {} {}'.format('egon',18,'male')
res='{1} {0} {1}'.format('egon',18,'male')
res='{name} {age} {sex}'.format(sex='male',name='egon',age=18) #strip strip() 括号里面有什么就可以删什么,默认删除空格和\n(换行符)
#该方法只能删除开头或是结尾的字符,不能删除中间部分的字符
name=' *barry** .'
print(name.strip('*')) print(name.strip('* .'))
print(name.lstrip('*')) rstrip(从右开始删除)
print(name.rstrip('*')) lstrip(从左开始删除) #replace(old,new,次数)
name='alex say :i have one tesla,my name is alex'
print(name.replace('alex','SB',1)) #####is系列
name='taibai123'
print(name.isalnum()) #字符串由字母或数字组成
print(name.isalpha()) #字符串只由字母组成
print(name.isdigit()) #字符串只由数字组成 
print(name.isspace()) #字符串只由空格组成

while。

while 条件:
循环体
无限循环。
终止循环:1,改变条件,使其不成立。2,break

while 1:                while True :

  pass      比             pass           的效率高

while else

当while循环被break打断市,就不会执行else的结果。

若没有break,则结束循环后最后会执行else语句。

continue :跳过本次循环,继续下一次的循环。

变量

变量:就是将一些运算的中间结果暂存到内存中,以便后续代码调用。
1,必须由数字,字母,下划线任意组合,且不能数字开头。
2,不能是python中的关键字。
['and', 'as', 'assert', 'break', 'class', 'continue',
'def', 'del', 'elif', 'else', 'except', 'exec',
'finally', 'for', 'from', 'global', 'if', 'import',
'in', 'is', 'lambda', 'not', 'or', 'pass', 'print',
'raise', 'return', 'try', 'while', 'with', 'yield']
3,变量具有可描述性。
4,不能是中文。
7,常量。
一直不变的量。 π
BIR_OF_CHINA = 1949

注释

方便自己方便他人理解代码。
单行注释:#
多行注释:'''被注释内容''' """被注释内容"""  ("""可以输出位置不变的多行str)

用户交互。input

1,等待输入,
2,将你输入的内容赋值给了前面变量。
3,input出来的数据类型全部是str

格式化输出

%为占位符,s,d为替换的类型 s(str);d(digit)

用法:'%s,%d'%(name,age)

%%只是在格式化输出中显示%

dic = {'name':'zzz','age':24}
a = 'name:%s,age:%d' % (dic['name'],dic['age'])
print(a)

  

编码

最早的密码本为ascii码 , ascii码覆盖了英文字母大小写,以及特殊字符,数字。ascii码储存的实际上是2进制(010101010101)。用一个字节表示,一个字节为8位。

ascii码为了解决全球化的文字问题,创建了一个万国码,unicode最早一个字符是两个字节,16位表示;现在是 一个字符(中文还是英文)用四个字节(32位)表示。

Unicode 升级 utf-8 utf-16 utf-32
8位 = 1字节bytes
utf-8 一个字符最少用8位去表示,

英文用8位                              一个字节
欧洲文字用16位去表示          两个字节
中文用24 位去表示                 三个字节
utf-16 一个字符最少用16位去表示

gbk 是中国人自己发明的,一个英文用一个字节;一个中文用两个字节(16位)去表示,只能用于中文和ascii码中的文字。

1bit     8bit = 1bytes
1byte  1024byte = 1KB
1KB    1024kb = 1MB
1MB   1024MB = 1GB
1GB    1024GB = 1TB0

编码的注意事项:1,各个编码之间的二进制是不能识别的,容易产生乱码。

2,文件的传输和存储只能是bytes类型,不是unicode. bytes类型包含常用的 utf-8,gbk,ascill码等。

str 在内存中是用unicode编码。要想文件的传输和存储只能将str--------->bytes ,用encode('utf-8')编码.

对于英文来说,  str :  表现的形式为  a = 'alex' ,  编码的方式为 unicode;

     bytes  :  表现的形式为   a =b'alex' , 编码的方式为  utf-8,gbk...

对于中文来说,  str :  表现的形式为  a = '中国' ,  编码的方式为 unicode;

     bytes  :  表现的形式为   a =b'\xe4\xb8\xad\xe5\x9b\xbd', 编码的方式为  utf-8,gbk...

s = '中国'
s1 = s.encode('utf-8')
print(s1) #b'\xe4\xb8\xad\xe5\x9b\xbd' s = '中国'
s1 = s.encode('gbk')
print(s1) #b'\xd6\xd0\xb9\xfa' 

逻辑运算符

非零数为True; 0为False

优先级:()> not>and>or,同一优先级从左往右计算。

not:返回表达式结果的“相反的值”

T and fun()  ,   执行后面fun()

F and fun()  ,   执行前面

F or fun()   ,    执行后面fun()

T or fun()  ,    执行前面

总结:or 与 and 情况相反

print(1>2 and 3 or 4 and 3 <2)
print(2 or 1<3 and 2)
False
2  

注意:不要在列表和字典的循环中删除列表或者是字典里面的元素,对于列表来说,不会报错但是删除的元素会有变化,但是字典会报错。

lis = [11,22,33,44,55]

for i in range(len(lis)):
# print(i)
if i %2 == 1:
# del lis[i]
lis.pop(i)
# print(lis)
print(lis)
#该结果应当是 [11,33,55]
#但是输出的结果为[11, 33, 44] ; 因为每次删除列表中的元素,在下一次循环中,
# 该列表中的元素的index会发生改变
正确的方法:

#将列表中的index为奇数的值删去

lis = [11,22,33,44,55,66,77,88]
j=0
for i in range(len(lis)):
if i % 2 == 1:
if i >1:
j=j+1
i= i-j
del lis[i] print(lis)
#需要将该字典中的K值带K的键值对删去

dic1 ={'k1':'s','k2':'23','s':'88','w':'22'}

for i in dic1:
if 'k' in i:
dic1.pop(i) print(dic1) #RuntimeError: dictionary changed size during iteration dic1 ={'k1':'s','k2':'23','s':'88','w':'22'}
l =[]
for i in dic1:
if 'k' in i:
l.append(i)
for j in l:
dic1.pop(j)
print(dic1) #{'s': '88', 'w': '22'}

列表:是以[]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型

li = [1,'a','b',2,3,'a']
# li.insert(0,55) #按照索引去增加
# print(li)
#
# li.append('aaa') #增加到最后
# li.append([1,2,3]) #增加到最后
# print(li)
#
# li.extend(['q,a,w']) #迭代的去增
# li.extend(['q,a,w','aaa'])
# li.extend('a')
# li.extend('abc')
# li.extend('a,b,c')
# print(li)

 删 

# l1 = li.pop(1) #按照位置去删除,有返回值
# print(l1) # del li[1:3] #按照位置去删除,也可切片删除没有返回值。
# print(li) # li.remove('a') #按照元素去删除
# print(li) # li.clear() #清空列表

 改 

# 改
# li = [1,'a','b',2,3,'a']
# li[1] = 'dfasdfas'
# print(li)
# li[1:3] = ['a','b']
# print(li)

index(方法用于从列表中找出某个值第一个匹配项的索引位置)# 但是对于重复的元素来说 index 只能返回相同元素的一个元素的索引位置:

l=[11,2,3,3,7,9,11,2]
for i in l:
# 对于Index来说 元素相同 就 返回第一个元素的索引;
n = l.index(i)
print("index:",n,"元素",i)
# index: 0 元素 11
# index: 1 元素 2
# index: 2 元素 3
# index: 2 元素 3
# index: 4 元素 7
# index: 5 元素 9
# index: 0 元素 11
# index: 1 元素 2

  

count(数)(方法统计某个元素在列表中出现的次数)。

sort (方法用于在原位置对列表进行排序)。如果列表中为非数字字符串,也可以排序,是按照第一个元素的ascii码来排序的。

li = ["曾辉","sss","wwww"]
li.sort()

  

reverse (方法将列表中的元素反向存放)。

a = [2,1,3,4,5]
a.sort()# 他没有返回值,所以只能打印a
print(a)
a.reverse()#他也没有返回值,所以只能打印a
print(a)

元组被称为只读列表,即数据可以被查询,但不能被修改,所以,字符串的切片操作同样适用于元组;但是元组的儿子不能改,但是孙子可能可以改变。如果元组里面只有一个元素,并且不加‘,’(逗号),则该元素是什么类型就是什么类型的

tup1 = ([1])
tup2 = ([1],)
print(tup1,type(tup1)) #[1] <class 'list'>
print(tup2,type(tup2)) #([1],) <class 'tuple'>
tu=(1,3,6,["asa",2,6],"sss")
tu[3][0] = "ss"
print(tu) (1, 3, 6, ['ss', 2, 6], 'sss') 

range  实际是按照数字顺序排列的列表,也可切片,有步长。

for i in range(0,10,1):
print(i)
for i in range(0,10,-1):
print(i)
for i in range(10,0,-1):
print(i)
for i in range(10,-1):
print(i) 0,1,2,3,4,5,6,7,8,9 什么都不输出也不报错 10,9,8,7,6,5,4,3,2,1 什么都不输出也不报错

 dict (字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。)

数据类型划分:可变数据类型,不可变数据类型
不可变数据类型:元组,bool int str 可哈希
可变数据类型:list,dict set 不可哈希
dict key 必须是不可变数据类型,可哈希,
value:任意数据类型。
dict 优点:二分查找去查询
存储大量的关系型数据
特点:无序的

dic1 = {'age': 18, 'name': 'jin', 'sex': 'male'}

dic1['age'] = 12 #若存在相同的K值,则会改变value(覆盖)
dic1['height'] = 175 #若没有K值,则会直接添加
print(dic1) dic1.setdefault('age') #若存在相同的K值,则value不会覆盖
dic1.setdefault('height',175) #若没有K值,则会直接添加
print(dic1)

删  

dic1 = {'age': 18, 'name': 'jin', 'sex': 'male'}

dic1.pop("age"),有返回值,返回的是value
print(dic1.pop('二哥',None)) #若删除找不到的K值,必须添加返回值,不然会报错
print(dic1.popitem()) #返回值为一个元组(K,V)
del dic1['age']
del dic1['二哥'] #若删除找不到的K值,会报错
del dic1
dic1.clear() print(dic1)

dic1 = {'age': 18, 'name': 'jin', 'sex': 'male'}
dic1['age'] = 16
#update 相同K的value值覆盖,没有的K-v 添加
dic = {"name":"jin","age":18,"sex":"male"}
dic2 = {"name":"alex","weight":75}
dic2.update(dic)
print(dic2)

dic = {"name":"jin","age":18,"sex":"male"}

for i in dic.values():
print(i)
for i in dic: #for i in dic.kes()
print(i)
for i in dic.items(): #返回的是一个元组(K,V)
print(i)
for i,j in dic.items():
print(i,j)
dic = {"name":"jin","age":18,"sex":"male"}

v1 = dic['weight']  #报错
print(v1)
print(dic.get('weight',0)) #用get 找不到k不会报错,则会返回0
enumerate:枚举,对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串)
enumerate将其组成一个索引序列,利用它可以同时获得索引和值。(索引,值)
li = ['alex','银角']
for i in enumerate(li): #索引的起始位置默认是0
print(i) # (0, 'alex'),(1, '银角')
for index,name in enumerate(li,1): #索引的起始位置变为1
print(index,name) #1 alex;2 银角
for index, name in enumerate(li, 100): # 起始位置默认是0,可更改
print(index, name) #100 alex;101 银角 dic = {'name':'alex','age':25,'sex':'nan'} for i in enumerate(dic): #字典默认循环遍历K
print(i) #(0, 'name');(1, 'age');(2, 'sex') for j in enumerate(dic.items()):
print(j) # (0, ('name', 'alex')) 

集合(set)

集合本身是可变类型(不可哈希),不能作为字典的键(K)。但是它里面的元素是可哈希的(不可变类型)

集合是无序的,不重复的数据集合。集合最重要的两点:

  1.去重,把一个列表变成集合,就自动去重了。

  2.关系测试,测试两组数据之前的交集、差集、并集等关系。

1.集合的创建

st1 = set({1,2,3,'abc'})
print(st1,type(st1)) st2 = {1,2,3,'abc'}
print(st2,type(st2))

2集合的增

st2 = {1,2,3,'abc'}

st2.add('qaz')

st2.update('abc')
st2.update('老师') #update 为可迭代增加
print(st2)

3.集合的删

st2 = {1,2,3,'abc'}

print(st2.pop())   #随机删除 ; 并且有返回值
# st2.remove('abc') #若找不到删除元素的,会报错
print(st2)
st2 = {1,2,3,'abc'}

# del st2     #删除集合
st2.clear() #清空集合;空的集合的变现形式为set()
print(st2)

4.集合的查

st2 = {1,2,3,'abc'}

for i in st2:
print(i)

5,集合的其他操作:

  1交集。(&  或者 intersection)   

st2 = {1,2,3,4,5,6}
st1 = {5,6,7,8,9,10}
# print(st2 & st1)
# print(st2.intersection(st1)) 

  2并集。(| 或者 union)

st2 = {1,2,3,4,5,6}
st1 = {5,6,7,8,9,10} # print(st1 | st2 )
# print(st2.union(st1))

  3差集。(- 或者 difference)

st2 = {1,2,3,4,5,6}
st1 = {5,6,7,8,9,10} # print(st1 - st2) #被减数(前)相对于减数(后)的特有的部分
# print(st2.difference(st1))

  4反交集。 (^ 或者 symmetric_difference)

st2 = {1,2,3,4,5,6}
st1 = {5,6,7,8,9,10} print(st2 ^ st1)

  5子集与超集

st2 = {1,2,3,4,5,6}
st1 = {5,6} print( st1 < st2) #返回的是pool值
print(st1.issubset(st2)) #st1是st2的子集 print(st2.issuperset(st1))
print( st2 > st1) # 这两个相同,都是说明set2是set1超集。

6.frozenset不可变集合,让集合变成不可变类型。 #只读

s = frozenset('barry')
print(s,type(s))
#返回值为:frozenset({'y', 'a', 'b', 'r'}) <class 'frozenset'>

python 基础知识点一的更多相关文章

  1. 最全Python基础知识点梳理

    本文主要介绍一些平时经常会用到的python基础知识点,用于加深印象,也算是对于学习这门语言的一个总结与回顾.python的详细语法介绍可以查看官方编程手册,也有一些在线网站可以学习 python语言 ...

  2. Python基础知识点小结

    1.Python基础知识 在Python中的两种注释方法,分别是#注释和引号('''   ''')注释,#注释类似于C语言中的//注释,引号注释类似于C语言中的/*   */注释.接着在Python中 ...

  3. Python基础知识点总结

    Python基础知识与常用数据类型 一.Python概述: 1.1.Python的特点: 1.Python是一门面向对象的语言,在Python中一切皆对象 2.Python是一门解释性语言 3.Pyt ...

  4. python 基础知识点整理 和详细应用

    Python教程 Python是一种简单易学,功能强大的编程语言.它包含了高效的高级数据结构和简单而有效的方法,面向对象编程.Python优雅的语法,动态类型,以及它天然的解释能力,使其成为理想的语言 ...

  5. Python基础知识点

    自学记录: 1.字符串 python中单引号和双引号使用完全相同. 使用三引号('''或""")可以指定一个多行字符串. 转义符 '\' 反斜杠可以用来转义,使用r可以让 ...

  6. python基础知识点四

    网络编程(socket) 软件开发的架构: 两个程序之间通讯的应用大致通过从用户层面可以分为两种: 1是C/S,即客户端与服务端,为应用类的,比如微信,网盘等需要安装桌面应用的 2是B/S,即浏览器与 ...

  7. python基础知识点三

    内置函数和匿名函数 python 一共有68个内置的函数:它们就是python提供给你直接可以拿来使用的所有函数 内置函数的图:链接 :https://www.processon.com/mindma ...

  8. python 基础知识点二

    深浅copy 1对于赋值运算来说,l1与l2指向的是同一个内存地址,所以他们是完全一样的. l1 = [1,2,3,['barry','alex']] l2 = l1 l1[0] = 111 prin ...

  9. Python基础知识点整理(详细)

    Python知识点整理(详细) 输出函数 print()可以向屏幕打印内容,或者在打开指定文件后,向文件中输入内容 输入函数 input([prompt])[prompt] 为输入的提示字符.该函数返 ...

随机推荐

  1. Java IO流学习总结

    Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...

  2. js方法和prototype

    JS中的方法可以分为三类 1.对象方法 2.类方法 3.原型方法 例: function People(name) { this.name=name; //对象方法 this.Introduce=fu ...

  3. AndroidManifest&period;xml 详解

    第1部分 标签库+包路径+版本控制 <manifest xmlns:android="http://schemas.android.com/apk/res/android" ...

  4. 【最后一篇API译文】Android开发-API指南- Contacts Provider

    Contacts Provider 今年加入了某字幕组,加之杂事颇多,许久未添新文了,惭愧之极. 在听闻 Google 即将重返中国后,近日忽又发现官方网站正在放出 API 中文版,比如本文.当然不是 ...

  5. 【锋利的jQuery】学习笔记04

    第四章 jQuery中的事件和动画 一.jQuery中的事件 加载DOM 在JS中等待页面加载完成通常使用window.onload方法,而在jQuery中则使用$(document).ready() ...

  6. psql rank row

    rank() OVER (PARTITION BY f1 ORDER BY f2 DESC) ROW_NUMBER() () OVER (PARTITION BY f1 ORDER BY f2 DES ...

  7. Linux控制脚本:信号捕捉,作业控制,调整谦让度,以及计划任务

    1.关于信号以及信号捕捉 (1) $ ps  -au可以用来查看所有作业,包括暂停的和停止的,当然还有正在运行的. 在STAT这一列表示各个作业的状态,S表示Stop,R表示Run,T表示被追踪的或停 ...

  8. 定时任务管理中心(dubbo+spring)-我们到底能走多远系列47

    我们到底能走多远系列47 扯淡: 又是一年新年时,不知道上一年你付出了多少,收获了多少呢?也许你正想着老板会发多少奖金,也许你正想着明年去哪家公司投靠. 这个时间点好好整理一下,思考总结一下,的确是个 ...

  9. angular select2 下拉单选和多选的取值赋值

    官网:http://select2.github.io/examples.html 兼容性: 引入文件 /select2.min.js /select2.min.css html <select ...

  10. Nginx 如何减轻高流量下的压力

    L:102 比如 Nginx 缓存服务出现问题(比如新增服务器等造成缓存失效) 所有资源请求直接穿透上游服务器 造成上游服务器压力倍增 特别热点文件 都是访问同个文件  以下可以减轻上述问题 第二种方 ...