Python对象类型
对象操作函数 1、数字类型
常用的算术运算符:数字运算相关的内置函数:math模块中的常用函数: 2、字符串
1.字符编码2.字符串表示3.转义字符串4.字符串变量5.字符串对象的主要方法 3、列表和元组
1.列表和元组的创建2.列表和元组的操作 4、字典
1.字典的创建2.字典的方法 5、序列对象的操作
1.成员关系操作符2.连接和重复操作符3.索引和切片操作符 对象使用中需注意的问题: Python对象类型
Python使用对象模型来存储数据,其中的任何一个数据都是一个对象,对象的类型决定该数据的存储方式。Python有一系列内建的对象类型,开发人员也可以根据需求创建自定义的对象类型。
Python常用的内建对象类型有:数字(Number)、字符串(String)、列表(List)、元组(Tuple)、字典(Dictionary),称为基本对象类型。
⚪type(object) 返回对象类型
a='string'type(a)
⚪dir(object) 返回对象的属性和方法列表
a=1dir(a)['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getnewargs__', '__gt__', '__hash__', '__index__', '__init__', '__init_subclass__', '__int__', '__invert__', '__le__', '__lshift__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__round__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', '__xor__', 'as_integer_ratio', 'bit_count', 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'numerator', 'real', 'to_bytes']
⚪help(object) 返回对象的帮助信息
⚪id(object) 返回对象的id值,改值在对象生命周期中是唯一的
⚪isinstance(object,classinfo) 如果对象是classinfo中的一个事例,则返回true,否则,返回false
a = 1b = 2c = isinstance(a, (int, ))>>> true
注:Python程序中的变量不需要实现定义类型,它根据变量赋值的对象确定类型。变量赋值后,就具有相应类的属性和方法,在变量后面加点号(.)可以访问相应类的属性和方法。
1、数字类型整型(int)、长整型(long)、浮点型(float)、复数型(complex)
其中,int、long、float与C语言中的表示规则相近,长整型后加l或L结尾,0x表示16进制,0o表示八进制,但浮点数相当于C语言中的双精度型,复数由“实部+虚部”组成,以一个j或J结束。
常用的算术运算符: 数字运算相关的内置函数: math模块中的常用函数: 2、字符串字符串是有序的字符集合,用于存储、表示基于文本的信息。
1.字符编码 encode 对字符串进行编码
decode 对字符串进行解码
a = '中'a.encode(encoding='utf-8')a.decode(encoding='utf-8')
在编码和解码的过程中,可以定义编码或解码采用的codec(编码解释器,类似查找表)。Python内置了很多codec,例如:ascii(英文字符编码)、gbk(简体汉字编码)、big5(繁体汉字编码)、utf_8(通用字符编码)
2.字符串表示 三种表示方式:
单引号
双引号
三引号
其中,三引号方式表示的字符串可以跨行。
Python利用%操作符来声明变量插入到的地方,%操作符后接一个类型转换符,定义插入变量的类型,例如:%s表示字符串,%d表示整数,%f表示浮点数等。字符串后面再加一个%操作符,后接对应变量值。
如:
print('The area of %s is %f sq km.' % ('shanghai', 6340))输出结果为:The area of shanghai is 6340.000000 sq km.
%操作符和转换符之间可以定义长度及小数位,例如8.2表示长度为8,小数点后面2位。数字前加“-”,表示做对齐,不加则表示右对齐。
如:
print('The area of %s is %-8.2f sq km.' % ('shanghai', 6340))输出结果为:The area of shanghai is 6340.00 sq km.
此外Python3.6后,新增格式化字符串,格式化字符串以“f”或“F”为前缀。
如:
city = "shanghai"area = 6340print(f'The area of {city} is {area} sq km.')输出结果为:The area of shanghai is 6340 sq km.
5.字符串对象的主要方法 3、列表和元组 两者都是用于存储不同类型数据的容器,可以包含数字、字符串、列表等基本类型元素,也可以包含其他对象,如栅格数据。
列表和元组形式上的区别是列表用一对方括号表示,元组用一对圆括号表示。列表和元组功能上的区别在于列表是可变的,而元组是不可变的。
列表创建方式:
# list_name = [element1, element2, element3, ...]# 例:L = ['abc', ['def', 'ghi']]
元组创建方式:
# tuple_name = (element1, element2, element3, ...)#例:T = (1, 'abc', ('def',))
注意:如果元组只有一个元素,该元素后面必须加逗号,如(1,),否则返回的只是元素的值而不是元组。
2.列表和元组的操作 列表和元组同字符串一样,具有序列类型数据的一些共性操作。
此外,因为列表是可变的序列类型,因此可以通过操作改变列表的值。
以下为改变列表值的主要操作:
s = ["a", "b", "c", "d", "e"] # 定义一个列表s[1] = "x" # 将列表中索引为1的原始替换成xs[0:2] = ["x", "y"] # 将列表中索引号从0到1(2-1)的元素用列表["x", "y"]代替s[0:6:2] = ["x", "y", "z"] # 将列表中索引号从0到5(6-1)、步长为2 的元素用["x", "y", "z"]代替del s[0:5:2] # 删除列表中索引号0到4、步长为2的元素s.append(["f"]) # 追加新元素s.extend(["e", "f"]) # 连接一个新的列表s.insert(1,"z") # 在索引号为1的位置插入一个元素"z"s.pop(1) # 去除索引号为1的元素s.remove("d") # 去除值为"b"的元素s = [3, 1, 4, 2] # 定义一个列表s.sort(key=None, reverse=True) # ker定义元素的转换函数(提取比较键),reverse表示是否从大到小进行排序
4、字典字典中的所有元素包含在一个花括号内,每个元素是一个键-值对,键和值之间用冒号连接。在字典中键是唯一的,且是不可变的类型,如数字、字符串或元组,与之相关联的值则没有限制,可以是数字、字符串、元组、列表、字典或其他python对象。
1.字典的创建# d_name = {key1:value1,key2:value2,...}# 例:d = {1:123,2:"abcd","c":[123,456]}d[2] = "ABC" # 若键2存在则修改其对应的值,若不存在则添加一条新的映射
2.字典的方法字典的主要方法如下:
# d_name = {key1:value1,key2:value2,...}# 例:s = {1: 1234}d = {1: 123, 2: "abcd", "c": [123, 456]}d.clear() # 清空字典内容,返回Nonea = d.copy() # 复制字典d,并创建新的字典对象ad.get(1) # 返回键1所关联的值,若键1不存在则返回Noned.pop(1) # 删除键1对应的元素,若键1不存在则抛出KeyError异常d.keys() # 返回字典所有键d.values() # 返回字典所有值d.items() # 返回字典的所有键和值d.update(s) # 用另一个字典的内容对当前字典进行更新
5、序列对象的操作序列对象(字符串、列表、元组)是元素的有序集合。Python中提供一些序列操作符包括成员关系操作符、连接和重复操作符、索引和切片操作符。
1.成员关系操作符 成员关系操作符包括in和not in,用来判断一个元素是否包含在一个序列中。
常见的操作如下:
# 语法:element [not] in sequences = 'a' in 'abc' # s的返回值为truep = "b" in ["abc", "def"] # p的返回值为Falsev = 1 in {1: "abc", 2: "def"} # 判断一个元素是否是字典的一个键,v返回值为True["a", "b", "c", "c"].count("b") # 统计序列中元素值为"b"的个数
2.连接和重复操作符相关操作如下:
# 连接操作符语法:sequence1 + sequence2a = "Hello"+" "+"world" # a的返回值为Hello world# 重复操作符语法:sequence1 * copies_intb = "a" * 3 # b的返回值为aaa
3.索引和切片操作符索引操作符相关用法说明如下:
# 索引操作符用于返回序列中的一个元素,语法:sequence[index]c = "ABCDEFG" # 定义一个字符串变量作为操作实例q = c[2] # (正索引值从左到右,最左位置对应的索引值为0)索引为2对应字符"C",q的值为Ct = c[-2] # (负索引值从右到左,最右位置对应的索引值为-1)索引为-2对应的字符为"F",t的值为Fw = c.index("B") # 序列的index(value)方法用于返回序列中元素值为value的元素索引号,w的值为1
切片操作符用法说明如下:
# 切片操作符用于返回序列中的多个元素,语法:sequence[starting_index:ending_index:step]# 操作后得到的是从起始索引(默认0)到结束索引(默认n-1)之间的、步长为step(默认1)a = "Hello World"a0 = a[0:6:2] # 返回值为Hloa1 = a[:5] # 返回值为Helloa2 = a[6:] # 返回值为Worlda3 = a[0:4] # 返回值为Hella4 = a[::2] # 返回值为HloWrda5 = a[::] # 返回值为Hello World
对象使用中需注意的问题:复制语句是复制对象的引用,而不是产生新的对象,也称浅复制。如创建一个变量并赋值给a,变量a又赋给变量b,变量a和变量b对应的是同一个对象(两个变量的id一致)。
a = [1, 2, 3, 4]b = ab[0] = 5print(a) # 返回值为[5, 2, 3, 4]
在这种多个变量引用同一个对象的情况下,改变一个变量的值会同时改变其他变量的值。因此,如果希望变量的值保持不变,应该使用不变对象(如使用元组而不是列表),这样可以使某些操作更加安全。
对可变对象,如要产生对象的备份,可使用copy方法进行深复制,深复制产生新的对象。
a = [1, 2, 3, 4]b = a.copy()b[0] = 5print(a) # 返回值为[1, 2, 3, 4]
本文图片大都源于网络,内容参考科学出版社《地理数据处理与分析》一书