python学习3:基础语法——变量&数据类型
变量:
注意项
- 变量不需要声明,直接赋值使用。
- 没有像js那样的自增自减(var i=0;i++ ,这种写法在python里不支持),要使用+=、 -=
- 变量名由数字字母下划线构成,数字不开头。python的变量支持中文,但我们尽量不用。
- 不能使用特殊字符 $ * # @ 等
- 不能使用关键字和保留字(举个栗子,如def、pass、try等这些语法关键字不能作为变量名。这点跟其他语言一样,不多说了)
- 严格区分大小写
变量赋值
- a = 1
- a = b = 1
- a, b = 1, 2
小tips: python中俩个变量交换值:
a = 1
b = 2
a, b = b, a
# 此时,就完成了a,b俩个值的互换,即a的值变成了2,b的值为1
数据类型:
python一共六种数据类型,其中str、tuple为不可变的数据。
我们可以利用type()方法检测出数据的类型
字符串 str
- 属于不可变数据
- 声明方法:
string1 = '单引号包起来的是字符串' string2 = "双引号里的也是字符串" '''我们也是字符串''' """我们还是字符串"""
- 转义符 \
# 试想这样一个场景,我们有如下一句代码: string = "小明说:“你好,python!”" # 这句里出现了俩对双引号,python怎么识别字符串的起止位置呢?所以我们这么写: string = "小明说:\"你好,python!\"" # \ 在这里就起到了转义的作用,让它后面的双引号丧失了自己的原有作用
- 字符串前缀:
string1 = r'\t\r\n' # 前缀r表示之后的字符串都为普通字符串,\的转义功能将失效 string2 = u'u表示本段字符串将用unicode解码' string3 = b'b表示这段字符串是bytes(二进制)'
- 字符串通过下标(偏移量)来访问每一个字符:
string = "零一二三四五六七" print(string[2]) # 控制台打印结果为:二
- 下标范围 < 字符串长度
- 字符串切片
string = '零一二三四五六七' slice1 = string[2:5:1] # 2表示开始的下标,5表示结束的下标,1表示步长 print(slice1) # 控制台打印结果为:二三四 可见切片取头不取尾 # 步长为1时我们可以省略不写,即上面的slice1可以省略为string[2:5] slice2 = string[5:2:-1] # 步长当然也可以为负数 print(slice2) #结果为:四三二 # 留点作业,自己尝试一下吧: print(string[2:7:2]) print(string[2:9:2]) print(string[-2:2:-1]) print(string[-5:-2])
数值
- 类型:
整型 | 浮点型 | 复数 |
---|---|---|
int() | float() |
-
进制转换(将十进制转换为其他进制)
bin(num) 十进制 -->二进制 oct(num) 十进制 --> 八进制 hex(num) 十进制 --> 十六进制
-
浮点型控制小数位数:.
%0.2f round(float,位数)
-
类型转化
字符型、浮点型 --> 整型 int() 字符型、整型 --> 浮点型 float()
string = '123' int1 = int(string) # int1 = 123 float1 = float(string) # float1 = 123.0 int2 = int(float1) float2 = float(int1)
列表 list
- 属于可变数据
- 定义:储存一系列相关数据的集合,相当于js里的数组
- 列表可以存储任意数据类型
- 下标范围小于列表长度
- 可以使用切片(参见字符串切片)
- 声明方法:
list1 = [1, 2, 3, 4, 5] list2 = ['a', 'b', 'c'] list3 = [1, 'a', [2, 3]] list4 = [list1, list2, list3] list5 = list('123456')
- 常用内建函数:
内建函数:指python自身已经封装好的方法(函数)。
list.append(item) 在末尾插入item list.insert(index,item) 在index位插入item list.pop(index) 删除 list.remove(item) 从list中删除item del list[index] 删除list的第index个 list.clear() 清空 list.copy() 浅拷贝 list.count(item) 计数,有多少个item list.extent(list1) 扩展,扩充,把list1的内容放到list list.index(item) 返回item的下标 list.reverse() 倒排,反转 list.sort() 升序。(降序需要再执行一次reverse()) 推导式:[表达式 for 元素 in 序列 《if 条件》] arr1=[1,2,3,4,5,6] arr2=[item*2 for item in arr1 if item<4] print(arr2) 生成式:(表达式 for 元素 in 序列 《if 条件》) 数组只是作为一个算法存在内存中,需要用到的时候才生成出来 # 推导式和生成式在之后的博客中会进行详细讲解,此处只做了解。
元组 tuple
- 不可变数据。(相当于不可变得列表)
- 创建一个元组:
tuple1=(1,2,3,4) tuple2=([1,2],[3,4]) tuple3=() tuple4=(1,)#单位数的元组要加逗号 tuple5=1,2,3,4 tuple6=tuple([1,2,3,4])
- 常用内建函数:
tuple.index(item) #返回item首次出现的下标 tuple.count(item) #查找item有几个
字典 dict
- 可变数据。
- 在js里叫对象,json格式
- 创建一个字典:
dict1={`name`:'牛巨侠'} dict2=dict(name='牛巨侠',age=18) dict2=dict(['name','age'],['牛巨侠','18']) dict.fromkeys(keylist,value) #快速创建值一样的字典
- 字典的访问:
dict[key] #获得key的值,如果不存在则报错 dict.get(key[,default]) #获得key的值,如果不存在则返回default或None
- 常用内建函数:
dict.clear() 清空字典 dict.copy() 浅拷贝 dict.fromkeys(key,value) 快速给key赋相同的值 dict.get(key[,default]) 获得key的值,如果不存在则返回default或None dict.items() 返回键值序列 dict.keys() 返回键序列 dict.values() 返回值序列 dict.pop(key) 删除key对应的item del dict[key] 删除key对应的item dict.setdefault(key,default) 设置一个默认的值(如果key不存在,则给他设置默认的值为default) dict.update() 更新字典,传入可选参数或其他字典进行更新
集合 set
- 可变的数据。
- 元素都是唯一的,不存在相同的元素。
- 创建一个集合:
set1=set("12345") set2=set("山西省") set3=set([1,2,3,4,1]) # 实现去重
- 常用内建方法:
set.add() 添加元素 set.copy() 浅拷贝 set.clear() 清空集合 set.pop() 删除任意一位元素 set.remove(item) 移除 set.update(集合|序列) 更新
- 集合的操作:
& 交集 | 并集 - 补集 ^ 对称集 (并集-交集) > 包含 >= < <=
布尔型 bool
NoneType
这一节内容比较多,请多练习。