python 基础知识点一
基础数据类型初始。
数字: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 基础知识点一的更多相关文章
- 最全Python基础知识点梳理
本文主要介绍一些平时经常会用到的python基础知识点,用于加深印象,也算是对于学习这门语言的一个总结与回顾.python的详细语法介绍可以查看官方编程手册,也有一些在线网站可以学习 python语言 ...
- Python基础知识点小结
1.Python基础知识 在Python中的两种注释方法,分别是#注释和引号(''' ''')注释,#注释类似于C语言中的//注释,引号注释类似于C语言中的/* */注释.接着在Python中 ...
- Python基础知识点总结
Python基础知识与常用数据类型 一.Python概述: 1.1.Python的特点: 1.Python是一门面向对象的语言,在Python中一切皆对象 2.Python是一门解释性语言 3.Pyt ...
- python 基础知识点整理 和详细应用
Python教程 Python是一种简单易学,功能强大的编程语言.它包含了高效的高级数据结构和简单而有效的方法,面向对象编程.Python优雅的语法,动态类型,以及它天然的解释能力,使其成为理想的语言 ...
- Python基础知识点
自学记录: 1.字符串 python中单引号和双引号使用完全相同. 使用三引号('''或""")可以指定一个多行字符串. 转义符 '\' 反斜杠可以用来转义,使用r可以让 ...
- python基础知识点四
网络编程(socket) 软件开发的架构: 两个程序之间通讯的应用大致通过从用户层面可以分为两种: 1是C/S,即客户端与服务端,为应用类的,比如微信,网盘等需要安装桌面应用的 2是B/S,即浏览器与 ...
- python基础知识点三
内置函数和匿名函数 python 一共有68个内置的函数:它们就是python提供给你直接可以拿来使用的所有函数 内置函数的图:链接 :https://www.processon.com/mindma ...
- python 基础知识点二
深浅copy 1对于赋值运算来说,l1与l2指向的是同一个内存地址,所以他们是完全一样的. l1 = [1,2,3,['barry','alex']] l2 = l1 l1[0] = 111 prin ...
- Python基础知识点整理(详细)
Python知识点整理(详细) 输出函数 print()可以向屏幕打印内容,或者在打开指定文件后,向文件中输入内容 输入函数 input([prompt])[prompt] 为输入的提示字符.该函数返 ...
随机推荐
- js 图片与base64互相转换
js将图片转化为base64 参考地址:http://www.cnblogs.com/mr-wuxiansheng/p/6931077.html var img = "imgurl" ...
- Oracle课程档案,第十天
用户管理 Authentication: 身份验证 AAA:Authentication: 身份验证 Authorization: 权限管理 Audition: 审计 grant:授权 unset:撤 ...
- JavaScript基础知识(数组的方法)
数组的方法(15个) 对象数据类型: 数组成员有一个与之对应的索引 length : 代表数组成员的个数: 操作改变数组一些方法:这些数组的方法都是内置的: // 1. 方法作用: // 2. 方法的 ...
- 找不到main
用eclipse写代码的时候,写了一个简单的程序,编译的时候突然出现“错误: 在类 com.test.demo 中找不到 main 方法, 请将 main 方法定义为: public static v ...
- php导出超大csv导出方法,读取超大文件或者接受超大数组,防止内存溢出
基本思路就是,知道总数之后分割成2万一个数组进行查询,最后独立写入csv,避免数据过大导致溢出 速度还不错,在php7下,机器I5 8G内存,128G,SSD,52W多条,大概也就30秒,出来整个文件 ...
- winform中按钮透明的方法
把Button设为透明的方法:1.修改 FlatAppearance属性下的BorderSize 为0 修改 FlatStyle 的属性为 Flat 2. /// <summary>// ...
- word文档发布至博客wordpress网站系统
今天ytkah接到一个需求:将word文档发布到wordpress网站上,因为客户那边习惯用word来编辑文章,想直接将内容导入到wp网站中,其实 Word 已经提供了这样的功能,并且能够保留 Wor ...
- python框架之Django(5)-O/RM
字段&参数 字段与db类型的对应关系 字段 DB Type AutoField integer AUTO_INCREMENT BigAutoField bigint AUTO_INCREMEN ...
- numpy 性能提升
a = np.array([1,2,3,4,5,1,2,2,2])c = np.unique(a)print(c) 对于很大的稀疏矩阵,我们不能用a[a>0]去取大于0的元素,而应该使用np.w ...
- sklearn countvectorizer坑
但是如果修改为['驴 福 记 ( 阜通 店 )','...',...]执行vectorizer.fit_transform就正常.原因是,创建CountVectorizer实例时,有一个默认参数ana ...