Python基础 之 int、bool、str、列表、元组、字典
数据类型
数据类型划分:可变数据类型 不可变数据类型
不可变数据类型:元组、bool、int (本身不可更改)、str (可哈希)
可变数据类型:列表list、字典dict 、集合set (不可哈希)
注意:集合为不可变类型,但是集合元素可变
一、Int
int 1,2,3... 用于计算
print(i.bit_length()) #求二进制最小位数
例如:
i=7
print(i.bit_length())
二、Bool
只有两种结果:True False
int----->str str(int)
str----->int int(str) 注意:字符串必须为数字
int----->bool 非零转换为bool为True,反之则为False
bool---->int 只有两种结果,真为1,假为0;
str-------bool
s=" " -------False 空字符串则为False
s="0"--------True 非空字符串都为True
相比
while True:
pass
还有一种方法更有效率:
while 1:
pass
三、字符串str
1、字符串的索引
s='ASDFGHJKL'
s1=s[3]
print(s1)
结果为:F
注意:对字符串进行操作否会形成新的字符串,对原字符串没有影响。
2、字符串的切片
s='ASDFGHJKL'
s1=s[0]
s2=s[0:4]
s3=s[-1]
s4=s[-2]
s5=s[0:]
s6=s[:]
s7=s[0:0]
s8=s[1:5:2]
s9=s[0:4:-1]
s10=s[3::-1]
s11=s[3::-2]
s12=s[-1::-1]
s13=s[::-1]
3、字符串的操作
s="alex wusir"
s1=s.capitalize() #首字母大写 s2=s.upper() #全部大写 s3=s.lower() #全部小写
下面看一个咱们常用的关于验证码的例子:
s_str="acEQ"
you_input=input("请输入验证码,不区分大小写")
if s_str.upper()==you_input.upper():
print("登录成功")
else:
print("验证码错误,请重新输入")
继续看对字符串的操作:
s4=s.swapcase() #大小写翻转 s5=s.title() #每个隔开的单词,首字母大写(特殊字符或数字) s6=s.center(20,"#") #居中,空白填充
s7=s.expandtabs() #逢8补齐
字符串有长度吗?答案是肯定的。咱们来看一下计算字符串长度的方法:
s="alex wusir"
i=len(s) #计算字符串的长度
print(i)
注意:中间的空格也占一个长度单位。
查看字符串开头和结尾的方法
s="alex wusir"
s1=s.startswith("alex") #字符串是以...开头 s2=s.endswith("sir") #字符串是以...结尾
查看字符在字符串中的索引位置:
s1=s.find("w") #返回w在字符串中的索引位置 s2=s.find("ex") #如果是多个,以第一个字母索引为准
通过位置找索引
s13=s.find("q") #通过元素找索引,找不到返回-1 s14=s.index("u") #通过元素找索引,找不到报错
删除字符串中空格或多余部分:
s1=s.strip() #默认删除空格 a="*a%lex Wusir%"
s2=a.strip("*%") #删除前后相同内容
print(s2) s=" alex wusir "
s3=s.strip() #删除前后空格 s4=s.rstrip() #删除右边空格 s5=s.lstrip() #删除左边空格
找出单个字符在字符串中的个数
s="asdfgbnhfdsshjk"
s1=s.count("s") #输出字母s在字符串中的个数
print(s1)
字符串转化为列表
s="alex wusir taibsi" #字符串转化为列表
y=s.split()
print(y)
4、格式化输出 format的三种方法
s1="我叫{},今年{},爱好{},再说一遍我叫{}".format("高雅",22,"看电影","高雅") s2="我叫{0},今年{1},爱好{2},再说一遍我叫{0}".format("高雅",22,"看电影") s3="我叫{name},今年{age},爱好{hobby},再说一遍我叫{name}".format(name="高雅",age=22,hobby="看电影")
5、replace 替换全部相同内容
s="我在教室写代码,写代码真有趣!"
r=s.replace("写代码","看书")
print(r)
replace("旧","新")
还可以加入替换的个数
replace("旧","新",个数)
6、for循环
s="pycharm"
for i in s:
print(i)
四、列表
1、增
有三种方法:append、insert、extend
li=["alex","wusir","egon","女神","taibai"] l1=li.append("高雅") #列表后面追加 l2=li.insert(1,"丫丫") #按照索引插入 l3=li.extend("写代码") #分解成最小元素添加
l3输出结果:['alex', 'wusir', 'egon', '女神', 'taibai', '写', '代', '码']
注意:int对象不能迭代;
可迭代的是每个组成的元素
例题:添加新员工姓名,按q退出
li = ['alex','wusir','egon','女神','taibai']
while True:
name = input("新人姓名:")
if name.upper()=="Q":
break
else:
li.append(name)
2、删
四种方法:pop、remove、clear、del
li=["alex","wusir","egon","女神","taibai"]
l1=li.pop(1) #按照索引删除元素
print(l1,li)
l2=li.pop() #索引为空,默认删除最后一个 l3=li.remove("高雅") #按照元素删除 l4=li.clear() #清空列表(列表为空) del li #删除列表(列表消失) del li[2:] #按照切片删除
l1输出结果:女神 ['taibai', 'wusir', 'egon']
注意:1)、pop()中,加入索引,唯一一个有返回值,索引为空,默认删除最后一个;
2)、clear()方法,列表为空,但列表存在;
3)、del方法,列表消失。
3、改
两种方法:按索引、按切片
li=["alex","wusir","egon","女神","taibai"]
li[0]="男神" #按索引修改 li[0]=[1,2,3] #按索引修改为列表 li[1:2]="yaya" #按切片修改(切片所指内容删除,在此位置随机按照元素添加)
li[1:2]="yaya"输出结果为:['alex', 'y', 'a', 'y', 'a', 'egon', '女神', 'taibai']
注意:按切片修改只是把切片内容删除,在此位置添加输入内容,并且是以单个元素添加
4、查
两种方法:for循环、切片
li=["alex","wusir","egon","女神","taibai"] for i in li: #for循环查询 print(li[0:2]) #按切片查
5、排序
li=[1,4,6,3,5,2,7,9] li.sort() #正向排序 li.sort(reverse=True) #反向排序 li.reverse() #反转
注意:排序只能用于Int类型,否则报错
6、列表的嵌套
li=["taibai","丑小丫","高雅",["alex","egon",78],34] print(li[1][1]) #小 print(li[0].capitalize()) #Taibai li[2]=li[2].replace("雅","丫") #高雅变为高丫(好难听啊。。)
print(li) li[3][0]=li[3][0].upper() #ALEX
print(li)
五、元组
只读列表,可循环查询,可切片。(儿子不能改,孙子可能可以改)
tu=(1,2,3,"alex",[2,3,4],"egon") print(tu[3].upper()) #ALEX tu[4].append("taibai") #内嵌列表中添加taibai
print(tu) for i in tu: #查询元祖中的每个元素
print(i) print(tu[0:4]) #(1, 2, 3, 'alex')
六、公共方法
1、len( ) 计算长度
tu=(1,2,3,"alex",[2,3,4],"egon")
l=len(tu)
print(l) #输出结果:6
2、count( ) 计算个数
tu=(1,2,3,"alex",[2,3,4],"egon","alex")
num=tu.count("alex")
print(num) #输出结果:2
3、index( ) 查询索引
tu=(1,2,3,"alex",[2,3,4],"egon","alex")
print(tu.index("egon")) #输出结果:5
七、Join
join:列表转换为字符串
那么字符串转换为列表是什么呢?之前讲过的,对了,就是split。
s="alex"
s1="_".join(s) #用_连接
print(s1) #输出结果:a_l_e_x s2="*".join(s) #用*连接
print(s2) #输出结果:a*l*e*x li=["alex","hello"]
s3="".join(li) #无缝连接
print(s3) #输出结果:alexhello
注意:引号里面是啥,就用此连接,如果是空,就是无缝连接。
八、Range
相当于列表,但元素只能是数字。
顾头不顾尾、0开头不用写、可以有步长
range()放索引位置,可切片
for i in range(10):
print(i) #输出结果:0,1,2,3,4,5,6,7,8,9 for i in range(0,10,2):
print(i) #输出结果:0,2,4,6,8 for i in range(10,0,-3):
print(i) #输出结果:10,7,4,1
注意一下
for i in range(0,10,-2):
print(i) #输出结果:
输出结果为空,啥都没有。
下面做一道题:让列表循环,当然里面的内嵌列表页要循环哦!
li = [1,2,3,5,'alex',[2,3,4,5,'taibai'],'afds']
#第一种方法:
for i in li:
if type(i)==list:
for j in i:
print(j)
else:
print(i)
#第二种方法:
for i in range(len(li)):
if i==5:
for j in li[i]:
print(j)
else:
print(li[i])
九、字典
python 中唯一一个映射数据类型
字典的key:必须是不可变数据类型
value:任意数据类型
字典dict优点:二分法查询
存储大量的关系型数据
特点:无序(包括3.5级以前版本)
1、增
1)、直接添加
dic1={"name":"jin","age":18,"sex":"male"}
dic1["high"]=185 #没有键值对,直接添加 dic1["age"]=16 #有键,则值覆盖
print(dic1)
2)、 setdafault
dic1.setdefault("weight") #有键值对不做任何改变,没有才添加
print(dic1)
dic1.setdefault("weight",150)
print(dic1)
2、删
1)、pop: 直接按照字典的键删除,有返回值
dic1={"name":"jin","age":18,"sex":"male"}
dic1.pop("age") #有返回值, dic1.pop("high","没有") #有则直接删除,没有则返回提示语
print(dic1)
2)、 popitem:随机删除,有返回值
dic1.popitem() #随机删除
print(dic1)
3)、clear:清空字典
dic1.clear() #清空字典
print(dic1)
4)、del:删除键值对,删除字典
del dic1["name"] #删除键值对,没有则报错
print(dic1)
del dic1["high"]
print(dic1)
del dic1 #删除字典
3、改
1)、直接通过字典的键修改
dic1={"name":"jin","age":18,"sex":"male"}
dic1["age"]=16 #键相同,值覆盖
print(dic1)
2)、update:更新字典
dic2={"name":"alex","weight":75}
dic2.update(dic1) #原字典更新添加到旧字典,有键则值覆盖,无键则全添加
print(dic2)
4、查
1)、通过keys、values、items查找
dic1={"name":"jin","age":18,"sex":"male"}
print(dic1.keys()) #字典的键
print(dic1.values()) #字典的值
print(dic1.items()) #字典的条目(以元组形式,键、值显示)
2)、for循环
for i in dic1: #啥都不写,默认为键
print(i)
for i in dic1.keys(): #字典的键
print(i)
for i in dic1.values(): #字典的值
print(i)
for i in dic1.items(): #字典的条目
print(i)
for k,v in dic1.items(): #以键、值形式显示
print(k,v)
3)、直接通过字典的键查询值
print(dic1["name"]) #查找对应的值,找不到报错
print(dic1["name1"]) #报错
4)、get
print(dic1.get("name")) #查找对应的值,找不到返回none
print(dic1.get("name1","None"))
print(dic1.get("name1","没有这个值"))#查找对应的值,找不到则返回提示语
5、字典dict嵌套
dic={
"name":["alex","wusir","taibai"],
"py9":{
"time":"",
"learn_money":19800,
"addr":"CBD"
},
"age":21
}
对上面列表进行操作:
1)、将alex全部大写
dic["name"][0]=dic["name"][0].upper()
print(dic)
2)、在name中添加yaya
dic["name"].append("yaya")
print(dic)
3)、将年龄变为56
dic["age"]=56
print(dic)
4)、在py9中添加键值对女生有6人
dic["py9"]["female"]=6
print(dic)
Python基础 之 int、bool、str、列表、元组、字典的更多相关文章
- Python的基础类型(int,bool,str):
Python的基础类型(int,bool,str): 1.int -------> 整形:主要用力进行数字计算 2.string ------>字符串:可以保存少量数据并进行相关的操作 3 ...
- python基础(int,str,bool,list)
1数字int. 数字主要是用于计算用的,使用方法并不是很多,就记住一种就可以: bit_length() #bit_length() 当十进制用二进制表示时,最少使用的位数 v = 11 1 ...
- 跟着ALEX 学python day2 基础2 模块 数据类型 运算符 列表 元组 字典 字符串的常用操作
声明 : 文档内容学习于 http://www.cnblogs.com/xiaozhiqi/ 模块初始: Python的强大之处在于他有非常丰富和强大的标准库和第三方库,几乎你想实现的任何功能都有相 ...
- python基础知识-04-字符串列表元组
python其他知识目录 内存,cpu,硬盘,解释器 实时翻译 编译器 :一次性翻译python2,3 除法,2不能得小数,3能得小数 1.字符串操作 1.1字符串操作startswith start ...
- Python基础 数据类型 (字符串、列表、字典、元组、集合、堆、栈、树)
数据类型有整型.布尔.字符串.列表.字典.元组.集合.堆.栈和树. 1.整型: 整型就是数字 数字表示 python2 64位机器,范围-2^63~2^63-1 超出上述范围,python自动转化为l ...
- python基础(6):列表和字典类型
前面我们所接触的数据类型都是存单个值,今天我们来看看可以存多个值的列表和字典. 预习: 1.有列表data=['alex',49,[1900,3,18]],分别取出列表中的名字,年龄,出生的年,月,日 ...
- python基本数据类型,int,bool,str
一丶python基本数据类型 1.int 整数,主要用来进行数学运算. 2.str 字符串,可以保存少量数据并进行相应的操作 3.bool 判断真假.True.False 4.list 存储大量数据, ...
- python基础2之字符串、列表、字典、集合
内容概要: 一.python2 or 3 二.字符串拼接 三.字符串 四.列表.元祖 五.字典 六.集合 七.练习 一.python2 or python3 目前大多使用python2.7,随着时间的 ...
- python 基础-----数字,字符串,列表,字典类型简单介绍
一.第一个python小程序 1.下载安装python2.7和python3.6的版本及pycharm,我们可以再解释器中输入这样一行代码: 则相应的就打出了一句话.这里的print是打印的意思.你输 ...
- python基础练习,循环、列表、字典、数组
# encoding: utf-8 ''' @author: mark @file: 20200214.py @time: 2020/2/14 14:21 @software: PyCharm ''' ...
随机推荐
- SQLite3的运用
1.导入库文件:libsqlite3. 2..m文件的代码: // // ViewController.m // SQLite3的运用 // // Created by PengYunjing on ...
- win10开始键点击无效果
1.在键盘上按下win+R键,或在开始菜单图标上点击右键选择运行: 2.输入powershell,按下“确定”运行:3.在窗口里输入或复制粘贴以下命令,注意只有一行: Get-AppxPackage ...
- UIScrollView的左右滑动和侧滑手势冲突的解决办法
转载自:https://blog.csdn.net/kst_123/article/details/77762811 当ViewController中添加了一个全屏的UIScrollView的时候,U ...
- python 递归函数和二分查找
1.初始递归 递归属于函数中的一种特殊函数,功能迅速并且干净利落,在函数中递归的基本就是在函数中调用自己本身 def func(): print(111) func() func()#将会无限循环‘1 ...
- 洛谷2943 [USACO09MAR]清理Cleaning Up——转变枚举内容的dp
题目:https://www.luogu.org/problemnew/show/P2943 一下想到n^2.然后不会了. 看过TJ之后似乎有了新的认识. n^2的冗余部分在于当后面那部分的种类数一样 ...
- STM8S103 PB4和PB5
STM8S103的PB4和PB5只能配置成开漏输出,用作I2C通讯: PB4和PB5不能配置为推挽输出,来控制LED之类的,因为内部没有上拉电阻,IO拉高电压只有1.8V左右,要想控制LED,只能通过 ...
- dxjk服务器安装 lamp
安装Apache:用的下面的安装法命令用的是 yum -y install httpdhttp://blog.csdn.net/kesixin/article/details/72882469 mys ...
- MyBatis 一对一(OneToOne)__SELECT
1.创建SQL脚本: CREATE TABLE t_person( id int(3) not null auto_increment, name varchar(20) default null ...
- 易酷cms本地包含漏洞拿shell
测试版本:易酷cms2.5 包含一句话:http://localhost/ekucms2.5/?s=my/show/id/{~eval($_POST[x])} 会在网站的/temp/Logs/目录下生 ...
- linux 下安装mysql-5.7.16
1.解压tar -xvf mysql的包 tar -xvf mysql-5.7.16-1.el6.x86_64.rpm-bundle.tar(mysql 官网中即可找到) 2.查看是否需要卸载安装时候 ...