python基础数据类型
数据类型
计算机复明肆意就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值。但是,计算机能处理的远不止数值,还可以处理文本、图形、音频、视频、网页等各种个样的数据,不同的数据,需要定义不同的数据类型。在Python中,能狗直接处理的数据类型有一下几种
一 Number(数字)
1.1 数字类型的创建
a=10
b=a
b=666
print(a)#10
print(b)#666
1.2 Number 类型转换
var1=3.14
var2=5
var3=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 成员运算符 - 如果字符串中包含给定的字符返回 True
print('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+c
print(d1)
# +效率低,该用join
d2=''.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 值为: 104
print(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=18
if 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)#['赵六', '王五', '李四', '张三']