数据类型
计算机复明肆意就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值。但是,计算机能处理的远不止数值,还可以处理文本、图形、音频、视频、网页等各种个样的数据,不同的数据,需要定义不同的数据类型。在Python中,能狗直接处理的数据类型有一下几种
一 Number(数字)
1.1 数字类型的创建
a=10b=ab=666print(a)#10print(b)#666
1.2 Number 类型转换
var1=3.14var2=5var3=int(val1)var4=float(val2)print(var3,var4)
二 字符串类型(string)
字符串是以单引号‘或双引号’括起来的任意文本,比如'abc','123'等等
请注意,''或""本身只是一种表示方式,不是字符串的一部分,因此,字符串'abc'只有a,b,c这3个字符。如果'本身也是一个字符,那就可以用""括起来,比如"I'm OK"包含的字符是I,',m,空格,O,K这6个字符。2.1 创建字符串
var1 = 'hello World!'var2 = "Python RAlvin"
对应操作:
# 1 *重复输出字符串print('hello'*2)# 2 [] ,[:] 通过索引获取字符串中字符,这里和列表的切片操作是相同的,具体内容见列表print('helloworld'[2:]) # 3 in 成员运算符 - 如果字符串中包含给定的字符返回 Trueprint('el' in 'hello') # 4 % 格式字符串print('alex is a good teacher')print('%s is a good teacher'%'alex') # 5 + 字符串拼接a='123'b='abc'c='789'd1=a+b+cprint(d1)# +效率低,该用joind2=''.join([a,b,c])print(d2)
三 字节类型(bytes)
# a=bytes('hello','utf8')# a=bytes('中国','utf8') a=bytes('中国','utf8')b=bytes('hello','gbk')#print(a) #b'\xe4\xb8\xad\xe5\x9b\xbd'print(ord('h')) #其十进制 unicode 值为: 104print(ord('中'))#其十进制 unicode 值为:20013 # h e l l o# 104 101 108 108 111 编码后结果:与ASCII表对应 # 中 国# \xd6\xd0 \xb9\xfa gbk编码后的字节结果#\xe4 \xb8 \xad \xe5 \x9b \xbd utf8编码后的字节结果# 228 184 173 229 155 189 a[:]切片取 c=a.decode('utf8')d=b.decode('gbk')#b=a.decode('gbk') :很明显报错 print(c) #中国print(d) #hello
注意:对于 ASCII 字符串,因为无论哪种编码对应的结果都是一样的,所以可以直接使用 b'xxxx' 赋值创建 bytes 实例,但对于非 ASCII 编码的字符则不能通过这种方式创建 bytes 实例,需要指明编码方式。
b1=b'123'print(type(b1))# b2=b'中国' #报错# 所以得这样:b2=bytes('中国','utf8')print(b2)#b'\xe4\xb8\xad\xe5\x9b\xbd'
四 布尔值
一个布尔值只有True、False两种值,要么是True,要么是False,在Python中,可以直接用True、False表示布尔值(请注意大小写)
print(True)print(4>2)print(bool([3,4]))print(True+1)
与或非操作:
bool(1 and 0)bool(1 and 1)bool(1 or 0)bool(not 0)
布尔值经常用在条件判断中:
age=18if age>18:#bool(age>18) print('old')else: print('young')
五 List(列表)
编程语言有一个重要的数据类型----列表(list)
什么是列表: 列表(list)是Python以及其他语言中最常用到的数据结构之一。Python使用中括号[]来解析列表。列表是可变的(mutable) --可以改变列表的内容。 对应操作:1 查 ([])
names_class2=['张三','李四','王五','赵六'] print(name_class2[2])#王五 print(name_class2[0:3])#['张三', '李四', '王五'] print(name_class2[0:7])#['张三', '李四', '王五', '赵六'] print(name_class2[-1])#赵六 print(names_class2[0:3:1])#['张三', '李四', '王五'] print(names_class2[3:0:-1])#['赵六', '王五', '李四']
2 增 (append,insert)
insert方法用于将对象插入到列表中,而append方法则用于在列表末尾追加新的对象
names_class2=['张三','李四','王五','赵六'] names_class2.append('alex')#['张三', '李四', '王五', '赵六', 'alex'] names_class2.append(2,'alvin')#['张三', '李四', 'alvin', '王五', '赵六'] print(names_class2)
3 改 (重新赋值)
names_class2 = ['张三', '李四', '王五', '赵六']names_class2[3]='赵七'#['张三', '李四', '王五', '赵七']names_class2[0:2]=['wusir','alvin']#['wusir', 'alvin', '王五', '赵六']print(names_class2)
4 删 (remove,del,pop)
names_class2 = ['张三', '李四', '王五', '赵六']names_class2.remove('张三')#['李四', '王五', '赵六']del names_class2[0]#['李四', '王五', '赵六']names_class2.pop()#['张三', '李四', '王五'] 注意,pop是有一个返回值的print(names_class2)
5 其他操作
5.1 count
count方法统计某个元素在列表中出现的次数
>>>['to', 'be', 'or', 'not', 'to', 'be'].count('to')2>>>x = [[1,2], 1, 1, [2, 1, [1, 2]]]>>>x.count(1)2>>>x.count([1,2])1
5.2 extend
extend 方法可以在列表的末尾一次性追加另一个序列中的多个值。
>>>a = [1, 2, 3]>>>b = [4, 5, 6]>>>a.extend(b)>>>a[1, 2, 3, 4, 5, 6]
extend 方法修改了被扩展的列表,而原始的连接操作(+)则不然,它会返回一个全新的列表。
>>>a+b[1, 2, 3, 4, 5, 6, 4, 5, 6]
5.3 index
index 方法用于从列表中找出某个值第一个匹配项的索引位置
print(names_class2.index('李四'))#1
5.4 reverse
reverse 方法将列表中的元素反向存放。
names_class2 = ['张三', '李四', '王五', '赵六']names_class2.reverse()print(names_class2)#['赵六', '王五', '李四', '张三']