python基本数据类型
a, b, c = 1, 2.5, 3+4j #赋值方式, 支持复数
"""
标准数据类型分为
Number----数字
String----字符串
List------列表
Tuple-----元组
Set ------集合
Dictionary--字典
可变与不可变数据类型:
可变数据类型就是允许数值发生改变,不可变就是不允许,其中差别:
不可变数据类型如果使用赋值等操作,相当于新建一个对象, 而对于相同值的对象在内存中只有一个, 内部会有一个计数器来记录这个变量会有多少引用
可变:List Dictionary Set
不可变: Number String Tuple
"""
#Number(数字)
#python3 支持int float bool complex
#python3 int == 长整型 没有python2中的Long
a, b, c, d = 20, 5.5, True, 4+3j #complex(4,3) 另一种表示方式
print(type(a), type(b), type(c), type(d))
#输出<class 'int'> <class 'float'> <class 'bool'> <class 'complex'>
#type用于判断变量所指对象类型
print(isinstance(a))
#输出:True
#isinstance():判断变量对象类型
#区别如下:
#type(): 不会认为子类是父类类型
#isinstance(): 会认为子类是父类类型
#del: 删除一些对象引用
var = 1
var1 = 2
del var, var1
print(var)#error
#类似于C++delete释放空间
数值运算
#其余运算基本一致这几个与C++不同
2 // 4 = 0.5#除法,得到一个整数
2 / 4 = 0 #除法,得到一个浮点数
17 % 3 = 2 #取余
2 ** 5 = 32 #乘方
String(字符串)
#字符串截取的语法格式
#变量[头下标:尾下标]
str = 'Hello,world'
print(str[0]) #H
print(str[0:-1]) #Hello,worl
print(str*2)#Hello,worldHello,world
print(str + "ssss")Hello,worlssss
#若向一个索引位置赋值会出现错误
#例如
str[2] = 'n'
List(列表)
#列表中元素的类型可以不同, 它支持数字,字符串甚至可以包含列表
#其余方法跟String基本相同
#列表可以改变值
#列表用中括号抒写
ls = [5454, 12.5, '213', 4+3j]
ls[1:3] = ['a', 'b']#批量修改
Tuple(元组)
#元组不能修改
#元组用小括号抒写
#元组内元素可以不同
tuple = (5454, 12.5, '213', 4+3j)#元组是特殊的字符串
tuple = () #空元组
tuple = (1, )#一个元素的元组要加","号
上述都是序列
Set(集合)
集合(set)是由一个或数个形态各异的大小整体组成的,构成集合的事物或对象称作元素或是成员。
基本功能是进行成员关系测试和删除重复元素。
student = {'Tom', 'Jim', 'Mary', 'Tom', 'Jack', 'Rose'}
print(student) # 输出集合,重复的元素被自动去掉
# 成员测试
if 'Rose' in student :
print('Rose 在集合中')
else :
print('Rose 不在集合中')
# set可以进行集合运算
a = set('abracadabra')
b = set('alacazam')
print(a)
print(a - b) # a 和 b 的差集
print(a | b) # a 和 b 的并集
print(a & b) # a 和 b 的交集
print(a ^ b) # a 和 b 中不同时存在的元素
"""
1. 集合元素不可重复
2. 集合中元素增删改查通过方法
"""
Dictionary(字典)
列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
# 键值对
dict = {}
dict['one'] = "1 - hello"
dict[2] = "2 - world"
tinydict = {'name': 'runoob','code':1, 'site': 'www.runoob.com'}
print (dict['one']) # 输出键为 'one' 的值
print (dict[2]) # 输出键为 2 的值
print (tinydict) # 输出完整的字典
print (tinydict.keys()) # 输出所有键
print (tinydict.values()) # 输出所有值
#注意:
#1、字典是一种映射类型,它的元素是键值对。
#2、字典的关键字必须为不可变类型,且不能重复。
#3、创建空字典使用 { }。
dir = dict([('Runoob', 1), ('Google', 2), ('Taobao', 3)])
dir = dict(h = 1, e = 2, o = 3)
dir = {x: x**2 for x in (2, 4, 6)}
#三种构造形式
数值转换
函数 | 描述 |
---|---|
[int(x ,base]) | 将x转换为一个整数 |
float(x) | 将x转换到一个浮点数 |
[complex(real ,imag]) | 创建一个复数 |
str(x) | 将对象 x 转换为字符串 |
repr(x) | 将对象 x 转换为表达式字符串 |
eval(str) | 用来计算在字符串中的有效Python表达式,并返回一个对象 |
tuple(s) | 将序列 s 转换为一个元组 |
list(s) | 将序列 s 转换为一个列表 |
set(s) | 转换为可变集合 |
dict(d) | 创建一个字典。d 必须是一个序列 (key,value)元组。 |
frozenset(s) | 转换为不可变集合 |
chr(x) | 将一个整数转换为一个字符 |
ord(x) | 将一个字符转换为它的整数值 |
hex(x) | 将一个整数转换为一个十六进制字符串 |
oct(x) | 将一个整数转换为一个八进制字符串 |
拓展
#元组可作为函数的返回值
def ex(a,b):
return (a,b)
#python变长参数
def test(*arg):
print(arg)
return arg
print(type(test(1,2,3))) #返回值是元组
#字典
#字典的实现是哈希表实现的
def ex(d):
for c in d:
print(c)
ex(dict(k = 1,h = 2)) #只会输出 k h
#改进
def ex(d):
for c in d:
print(c, ':', d[c]) #print可以输出多个参数, 用","号分隔
ex(dict(k=1, h=2))
#type 与 isinstance的区别
# 判断子类对象是否继承于父类
#isinstance判断某个类是否继承某个类
class father(object):
pass
class son(father):
pass
if __name__ == '__main__':
print (type(son())==father)
print (isinstance(son(),father))
print (type(son()))
print (type(son))
False
True
<class '__main__.son'>
<class 'type'>
#切片还可以设置步长
demo = [1, 2, 3, 4, 5, 6]
print(demo[1::2]) #[2, 4, 6]取出来是一个新的列表