day004-python运算符与基本数据类型
一、运算符
1、算术运算符:主要用于两个对象算数计算(加减乘除等运算)
运算符:
+:两个对象相加
-:得到负数或是一个数减去另一个数
*:两个数相乘或是返回一个被重复若干次的字符串
/:x除以y
%:返回除法的余数
**:返回x的y次幂
//:返回商的整数部分
2、比较(关系)运算符:用于两个对象比较(判断是否相等、大于等运算)
运算符:
==:比较对象是否相等
!=:比较两个对象是否不相等
<>: 比较两个对象是否不相等
>: 返回x是否大于y
<: 返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。注意,这些变量名的大写。
>=: 返回x是否大于等于y
<=: 返回x是否小于等于y
3、赋值运算符:用于对象的赋值,将运算符右边的值(或计算结果)赋给运算符左边。
运算符:
=: 简单的赋值运算符
+=: 加法赋值运算符
-=: 减法赋值运算符
*=: 乘法赋值运算符
/=: 除法赋值运算符
%=: 取模赋值运算符
**=: 幂赋值运算符
//=: 取整除赋值运算符
4、逻辑运算符:用于逻辑运算(与或非等)。
运算符:
and: 并运算符
or: 且运算符
not: 非运算符
5、位运算符: 对Python对象进行按照存储的bit操作。
运算符:
&: 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0
|: 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。
^: 按位异或运算符:当两对应的二进位相异时,结果为1
~: 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1
<<: 左移动运算符:运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0
>>: 右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数
6、成员运算符:判断一个对象是否包含另一个对象。
运算符:
in: 如果在指定的序列中找到值返回 True,否则返回 False
not in: 如果在指定的序列中没有找到值返回 True,否则返回 False
7、身份运算符:判断是不是引用自一个对象
运算符:
is: 判断两个标识符是不是引用自一个对象
is not: is not是判断两个标识符是不是引用自不同对象
二、基本数据类型
1、数字: int(整数)
2、字符串(str)
a.创建方式
s1 = "name"
s2 = str('myname')
b.特有功能
s1.upper() #转换为大写
s1.find() #查询字符
s1.replace() #替换
s1.strip() #去掉首尾空白处
utf-8编码:一个汉字,是3个字节,1个字节是8位
c.编码、for:
name = "李露"
for i in name:
print(i)
bytes_list = bytes(i, encoding='utf-8')
print(bytes_list)
for b in bytes_list:
1、python3.5 for循环时候,循环的每一个元素是“字符”
2、字符 =》字节
bytes_list = bytes("字符串", encoding='utf-8')
#utf-8 => 3字节
#gbk => 2字节
print(bytes_list) #默认每一个字节都是16进制表示
for b in bytes_list:
print(b) #默认每一个字节都是10进制表示
3、10进制的数字 ==》2进制
bin(10进制的数字)
4、byte 和str
st = str()
a.创建字符串
b.转换成字符串、字节、编码、for
m = bytes()
a.创建字节
b.转换成字节,字符串,要编程什么编码类型的字节
3、布尔值
4、元组(tuple)
a.创建元组
t = (11,21,33)
t1 = tuple()
b.特有功能
t= tuple()
t.count()
t.index()
c.嵌套(元素不可修改)
5、列表(list)
可变元素的“集合”
a.创建列表:
li = [11,22,33]
li = list() #创建一个列表
b.将其他元素转换成列表
字符串、元组、字典 =》列表
t2 =("name","age")
l2 = list(t2)
c.特有功能
li = list()
li.append() #向列表中添加数据
li.clear() #清除
li.extend() #批量增加、扩展
li.reverse() #翻转,自己内部元素翻转
li.insert() #向指定的位置插入元素
6、字典(dict)
三、基本数据类型之set(set是一个无序且不允许重复的集合)
1)创建
a. se = set() #创建一个空集合
b. se = {11,22,33,44}
2)实例:
li = [11,222,11,2]
s1 = set(li)
s1 = [2,11,222]
3)set提供的方法
a. add() #添加一个元素
b. clear() #清空集合内容
c. copy() #全拷贝
d. difference #找不同的集合,并将新值赋值给新变量
例:
se = {11,22,33}
be = {22,55}
#找se中存在,be中不存在的集合,并将新值赋值给新变量
ret = se.difference(be)
print(ret)
#找be中存在,se中不存在的集合
ret = be.difference(se)
print(ret)
e. difference_update() #找不同的集合,并更新自己
例:
ss = {11,22,33}
bbb = {22,55}
#找se中存在,be中不存在的集合,并更新自己
ss.difference_update(bb)
print(ss)
#找be中存在,se中不存在的集合,并更新自己
bb.difference_update(ss)
print(bb)
f. discare()、remove() #移除指定的元素
例:
se = {11,22,33}
se.discare(11)
print(se) ==>{22,33}
g. intersection() #找交集,并将新值赋值给新变量
h. intersection_update() #找交集,并更新自己
i. isdisjoint() #有交集为False, 没交集为True
j. issubset() #是否子集合,是子集合为True,否则为False
k. issuperset() #是否是父集合,是父集合为True,否则为False
l. union() #并集
四、三元运算
普通的条件语句
if 1 == 1:
name = "hello"
else:
name = "world"
三元运算语句
#如果条件成立,则将值1赋值给name,否则将值2赋值给name
name = 值1 if 条件 else 值2
五、不同数据类型在内存中的存址方式
a. 字符串srt,一次性创建,不能被修改,只要修改,再创建
b. 列表list, 链表,下一个元素的位置,上一下元素的位置
六、深浅拷贝
1)深拷贝:在内存中将所有的数据重新创建一份(排除最后一层,即python内部对字符串和数字的优化)
2)浅拷贝:在内存中只额外创建第一层数据
3)赋值:只是创建一个变量,该变量指向原来的内存地址。
a. 对于数字和字符串而言,赋值、浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址。
b. 对于字典、元组和列表而言,赋值、浅拷贝和深拷贝时,其内存地址的变化是不同的
最新文章
- Redis Cluster
- 功能实现:PLC对LPC的音量控制
- C#数字日期装换为中文日期
- 【转】前端工程筹建NodeJs+gulp+bower
- 关于已配置log4j,运行tomcat时显示警告的分析
- SQL查询符合条件的记录的总数
- C#获取当前时间与同步时间
- WIN10图标显示异常
- codeforce Number of Ways(暴力)
- Swing应用开发实战系列之一:自定义JdbcTemplate
- Unity5.1 新的网络引擎UNET(二) UNET 官方推荐Demo案例
- [磁盘管理与分区]——MBR破坏与修复
- 【转】开发者教程:如何将Android应用发布到Google Play(Android Market)官方市场
- oracle数据同步方案
- unity tips
- IP池验证IP是否可用 及scrapy使用 ip池
- 【M2】软件工程终期总结报告——前端设计总结
- python基础类型—列表
- 为 github markdown 文件生成目录(toc)
- IconMoon图标字体制作
热门文章
- windows 安装 scrapy (python3.7)
- js 数组sort, 多条件排序。
- [SOJ #687]双生串(2019-11-6考试)/[hdu5431]AB String
- java 泛型和object比较
- Java的Stream流式操作
- Linux下mongoDB下载与安装
- 使用JavaConfig配置SpringMVC
- 【JVM学习笔记一】Java内存区域
- [TensorFlow 2.0] Keras 简介
- Solr基础理论【倒排索引,模糊查询】