Python学习-数据类型!
Python学习-数据类型!
1:Python的创始人
Python (英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/), 是一种解释型、面向对象、动态数据类型的高级程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年。
python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。
Python社区的人赋予他“仁慈大君” 的称号,这一称号直接来自英国肥皂剧《Monty Python飞行马戏团》。Guido当初之所以选中Python作为语言的名字,是因为他太喜欢这部肥皂剧了。
2:Python的基本数据类型
数字
- int(整型)
-
在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647
-
在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807
- long(长整型) – python3 中已经将该类型取消
-
跟C语言不同,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大。
-
注意,自从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母L也不会导致严重后果了。
- float(浮点型)
-
浮点数用来处理实数,即带有小数的数字。类似于C语言中的double类型,占8个字节(64位),其中52位表示底,11位表示指数,剩下的一位表示符号。
- complex(复数)
-
复数由实数部分和虚数部分组成,一般形式为x+yj,其中的x是复数的实数部分,y是复数的虚数部分,这里的x和y都是实数。
-
注:Python中存在小数字池:-5 ~ 257
布尔值
- 真或假
-
1 或 0
-
True 或 False
字符串
-
"hello world"
- 万恶的字符串拼接
-
python中的字符串在C语言中体现为是一个字符数组,每次创建字符串时候需要在内存中开辟一块连续的空,并且一旦需要修改字符串的话,就需要再次开辟空间,万恶的+号每出现一次就会在内从中重新开辟一块空间。
- 字符串格式化
-
name = "zhangcong"
-
print "i am %s " % name
-
-
# 输出
-
i am zhangcong
- 字符串常用功能:
- strip() # 去掉字符串首尾空格、换行符、tab
-
value = " my name is zhangcong "
-
print(value.strip()) # 会将首尾的空格去掉
-
-
# 输出
-
-
my name is zhangcong
-
- split() # 通过指定分隔符对字符串进行切片,得到一个列表
-
names = "zhangsan, lisi, wangwu"
-
name2 = names.split(",")
-
print(name2)
-
-
# 输出
-
-
['zhangsan', ' lisi', ' wangwu']
-
- center() # 返回一个原字符串居中,并使用空格填充至长度 width 的新字符串。默认填充字符为空格。
-
例1:
-
value = "my name is zhangcong"
-
print(value.center(50))
-
-
# 输出
-
-
my name is zhangcong
-
例2:
-
-
# 使用*填充空格
-
-
value = "my name is zhangcong"
-
print(value.center(50, '*'))
-
-
# 输出
-
-
***************my name is zhangcong***************
-
- find() # 字符串查找
-
例1:
-
-
# 在字符串value中查找字符串"zhangcong"是否存在,如果存在返回其下标值
-
-
value = "my name is zhangcong"
-
print(value.find("zhang"))
-
-
# 输出
-
-
-
11
-
-
-
-
例2:
-
-
# 指定开始的位置查找
-
-
value = "my name is zhangcong, my name is zhangcong"
-
print(value.find("zhang", 12))
-
-
# 输出
-
-
33
-
- capitalize() # 首字母大写,没什么卵用
-
value = "my name is zhangcong, my name is zhangcong"
-
print(value.capitalize())
-
-
# 输出
-
-
My name is zhangcong, my name is zhangcong
-
- upper() # 将字符串里面的所有字母都改为大写
-
value = "43 fd"
-
print(value.upper())
-
-
# 输出
-
-
43 FD
-
- format() 格式化字符串
-
value = "my name is {}"
-
print(value.format("zhangcong"))
-
-
# 输出
-
-
my name is zhangcong
-
- isdigit() # 判断字符串是否是数字类型 返回True 或 False
-
例1:
-
value = "my name is {}"
-
print(value.isdigit())
-
-
# 输出
-
-
-
False
-
-
-
-
例2:
-
num_str = "1000"
-
print(num_str.isdigit())
-
-
# 输出
-
-
True
-
- isalnum() # 判断字符是否只含有字母和数字组成 返回True 或 False
-
例1:
-
value = "43fd"
-
print(value.isalnum())
-
-
# 输出
-
-
-
True
-
-
-
-
例2:
-
-
# value中包含一个空格
-
-
value = "43 fd"
-
print(value.isalnum())
-
-
# 输出
-
-
False
-
- endswith() # 匹配字符串的结束位置,返回True 或 False
-
value = "43 fd"
-
print(value.endswith("fd"))
-
-
# 输出
-
-
-
True
-
-
-
-
print(value.endswith("c"))
-
-
# 输出
-
-
False
-
- startswith() # 匹配字符串的开始位置,返回True 或 False
-
value = "43 fd"
-
print(value.startswith("4"))
-
-
# 输出
-
-
-
True
-
-
-
-
print(value.startswith("fda"))
-
-
# 输出
-
-
False
-
- strip() # 去掉字符串首尾空格、换行符、tab
列表
-
# 创建列表
-
name_list = ["zhangsan", "lisi", "wangwu"]
-
或
-
name_list = list(["zhangsan", "lisi", "wangwu"])
-
# 通过列表的下标来取对应的值
-
print(name_list[1])
-
# 输出
-
lisi
- 列表常用功能
- 修改列表中的值
-
-
# 将name_list中的 "lisi" 修改为 "liwu"
-
-
name_list = ["zhangsan", "lisi", "wangwu"]
-
name_list[1] = "liwu" # 指定下标修改列表的值
-
print(name_list)
-
-
# 输出
-
-
['zhangsan', 'liwu', 'wangwu']
-
- 切片
-
-
# 输出name_list中的第一个值和第二个值
-
-
name_list = ["zhangsan", "lisi", "wangwu", 1, 2, 3, 4, 5]
-
print(name_list[1:3]) # 顾头不顾尾
-
-
# 输出
-
-
['lisi', 'wangwu']
-
- 步长
-
-
# 首先创建一个从0到100的列表,不包含100
-
-
num_list = list(range(100))
-
print(num_list[::2])
-
-
# 输出
-
-
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98]
-
-
# 注:通过步长可以取奇偶数
-
- insert() # 指定坐标插入值
-
-
# 在列表name_list的值"lisi"前面插入一个值"xiaogou"
-
-
name_list = ["zhangsan", "lisi", "wangwu"]
-
name_list.insert(1, "xiaogou")
-
print(name_list)
-
-
# 输出
-
-
['zhangsan', 'xiaogou', 'lisi', 'wangwu']
-
- append() # 在列表的末尾追加一个值
-
name_list = ["zhangsan", "lisi", "wangwu"]
-
name_list.append("xiaogou")
-
print(name_list)
-
-
# 输出
-
-
['zhangsan', 'lisi', 'wangwu', 'xiaogou']
-
- remove() # 删除列表中的指定值
-
name_list = ["zhangsan", "lisi", "wangwu"]
-
name_list.remove("lisi")
-
print(name_list)
-
-
# 输出
-
-
['zhangsan', 'wangwu']
-
-
# 如果删除的值不在列表中,则会报错
-
-
name_list = ["zhangsan", "lisi", "wangwu"]
-
name_list.remove("lisfdi")
-
print(name_list)
-
-
# 输出报错信息
-
-
ValueError: list.remove(x): x not in list
-
- count() # 查找在列表中出现的次数
-
name_list = ["zhangsan", "lisi", "wangwu", "lisi", 1, 2, 3, 4, 5]
-
print(name_list.count("lisi")) # 查找"lisi"在列表中出现的次数
-
-
# 输出
-
-
2
-
- index() # 查找在列表中的下标
-
name_list = ["zhangsan", "lisi", "wangwu", "lisi", 1, 2, 3, 4, 5]
-
print(name_list.index("lisi"))
-
-
# 输出
-
-
-
1
-
-
-
-
-
# 如果查找的值在列表中不存在,则会报错
-
-
name_list = ["zhangsan", "lisi", "wangwu", "lisi", 1, 2, 3, 4, 5]
-
print(name_list.index("lisi2"))
-
-
# 输出报错信息
-
-
ValueError: 'lisi2' is not in list
-
- extend() # 在原先列表的基础之上扩展一个新的列表
-
name_list = ["zhangsan", "lisi", "wangwu", "lisi"]
-
name_list2 = [1, 2, 3, 4, 5]
-
name_list.extend(name_list2)
-
print(name_list)
-
-
# 输出
-
-
['zhangsan', 'lisi', 'wangwu', 'lisi', 1, 2, 3, 4, 5]
-
- reverse() # 将列表的值进行反转
-
name_list = ['zhangsan', 'lisi', 'wangwu', 'lisi', 1, 2, 3, 4, 5]
-
name_list.reverse()
-
print(name_list)
-
-
# 输出
-
-
[5, 4, 3, 2, 1, 'lisi', 'wangwu', 'lisi', 'zhangsan']
-
- sort() # 排序
-
-
# 在python3中,列表中的值同时存在字符串和数字时排序是会报错的,在python2中是没有问题的,python2中是按照ascll编码顺序进行排序的
-
-
name_list = ['zhangsan', 'lisi', 'wangwu', 'lisi', 1, 2, 3, 4, 5]
-
name_list.sort()
-
-
# 输错报错信息
-
-
-
TypeError: unorderable types: int() < str()
-
-
-
-
-
# 对字母进行排序
-
-
name_list = ['zhangsan', 'lisi', 'wangwu', 'lisi']
-
name_list.sort()
-
print(name_list)
-
-
# 输出
-
-
-
['lisi', 'lisi', 'wangwu', 'zhangsan']
-
-
-
-
-
# 对数字进行排序
-
-
num_list = [3, 4, 1, 100, 3, 5, 6]
-
num_list.sort()
-
print(num_list)
-
-
# 输出
-
-
[1, 3, 3, 4, 5, 6, 100]
-
- pop() # 默认删除列表最后的一个值,并返回删掉的那个值
-
name_list = ['zhangsan', 'lisi', 'wangwu', 'lisi', '44']
-
pop_name = name_list.pop()
-
print(name_list)
-
print(pop_name)
-
-
# 输出
-
-
['zhangsan', 'lisi', 'wangwu', 'lisi']
-
-
44
-
-
-
-
-
# 指定下标删除列表元素
-
-
name_list = ['zhangsan', 'lisi', 'wangwu', 'lisi', '44']
-
pop_name = name_list.pop(2)
-
print(name_list)
-
print(pop_name)
-
-
# 输出
-
-
['zhangsan', 'lisi', 'lisi', '44']
-
wangwu
-
- copy() # 浅拷贝 可以通过id()查看内存地址看区别
-
name_list = ['zhangsan', 'lisi', 'wangwu', 'lisi', '44']
-
name_list2 = name_list.copy()
-
print("name_list: %s" % name_list)
-
print("name_list2: %s" % name_list2)
-
-
# 将name_list中的'zhangsan'改为'liusan'
-
-
name_list[0] = 'liusan'
-
print("修改完之后")
-
print("name_list: %s" % name_list)
-
print("name_list2: %s" % name_list2)
-
-
# 输出
-
-
name_list: ['zhangsan', 'lisi', 'wangwu', 'lisi', '44']
-
name_list2: ['zhangsan', 'lisi', 'wangwu', 'lisi', '44']
-
修改完之后
-
name_list: ['liusan', 'lisi', 'wangwu', 'lisi', '44']
-
-
name_list2: ['zhangsan', 'lisi', 'wangwu', 'lisi', '44']
-
-
-
-
-
# 在name_list中嵌套一个列表,然后拷贝一份,然后在修改嵌套列表中的值
-
-
name_list = ['zhangsan', 'lisi', 'wangwu', 'lisi', '44', [3, 4, 1, 100, 3, 5, 6]]
-
name_list2 = name_list.copy()
-
print("name_list: %s" % name_list)
-
print("name_list2: %s" % name_list2)
-
-
# 将name_list中的'zhangsan'改为'liusan'
-
-
name_list[-1][0] = 'liusan'
-
print("修改完之后")
-
print("name_list: %s" % name_list)
-
print("name_list2: %s" % name_list2)
-
-
# 输出
-
-
-
# 可以看到name_list中嵌套列表中的值被修改,name_list2也随着变化,浅拷贝只能操作第一层
-
-
name_list: ['zhangsan', 'lisi', 'wangwu', 'lisi', '44', [3, 4, 1, 100, 3, 5, 6]]
-
name_list2: ['zhangsan', 'lisi', 'wangwu', 'lisi', '44', [3, 4, 1, 100, 3, 5, 6]]
-
修改完之后
-
name_list: ['zhangsan', 'lisi', 'wangwu', 'lisi', '44', ['liusan', 4, 1, 100, 3, 5, 6]]
-
name_list2: ['zhangsan', 'lisi', 'wangwu', 'lisi', '44', ['liusan', 4, 1, 100, 3, 5, 6]]
-
-
# 浅拷贝与=之间的区别,等于号相当于软连接,浅拷贝类似于上面
-
- 修改列表中的值
字典
- 创建字典
-
# 字典是以key和value的形式出现的
-
id_db = {
-
22323232: {
-
"name": "ShanPao",
-
"age": 22,
-
"addr": "ShanDong"
-
},
-
43267432:{
-
"name": "DaShanPao",
-
"age": 24,
-
"addr": "DongBei"
-
}
-
}
-
# 输出字典中key为id_db[22323232]的值
-
print(id_db[22323232])
-
# 修改字典中key为22323232的key "name"的值
-
id_db[22323232]["name"] = "Wangwu"
-
print(id_db)
-
# 输出
-
{'age': 22, 'addr': 'ShanDong', 'name': 'ShanPao'}
-
{22323232: {'age': 22, 'addr': 'ShanDong', 'name': 'Wangwu'}, 43267432: {'age': 24, 'addr': 'DongBei', 'name': 'DaShanPao'}}
- 字典常用功能
- pop() # 对指定key进行删除,并返回其value
-
id_db = {
-
22323232: {
-
"name": "ShanPao",
-
"age": 22,
-
"addr": "ShanDong"
-
},
-
43267432:{
-
"name": "DaShanPao",
-
"age": 24,
-
"addr": "DongBei"
-
}
-
}
-
print(id_db)
-
v = id_db.pop(43267432)
-
print(v)
-
print(id_db)
-
-
# 输出
-
-
-
# 字典id_db的值
-
-
{22323232: {'age': 22, 'addr': 'ShanDong', 'name': 'ShanPao'}, 43267432: {'age': 24, 'addr': 'DongBei', 'name': 'DaShanPao'}}
-
-
# 通过pop()删除的值
-
-
{'age': 24, 'addr': 'DongBei', 'name': 'DaShanPao'}
-
-
# 通过pop()删除之后的值
-
-
{22323232: {'age': 22, 'addr': 'ShanDong', 'name': 'ShanPao'}}
-
- get() # 通过key获取值
-
id_db = {
-
22323232: {
-
"name": "ShanPao",
-
"age": 22,
-
"addr": "ShanDong"
-
},
-
43267432:{
-
"name": "DaShanPao",
-
"age": 24,
-
"addr": "DongBei"
-
}
-
}
-
print(id_db.get(43267432))
-
-
# 输出
-
-
{'age': 24, 'name': 'DaShanPao', 'addr': 'DongBei'}
-
- update() # 对已经存在的key进行更新,没有的key进行添加
-
id_db = {
-
22323232: {
-
"name": "ShanPao",
-
"age": 22,
-
"addr": "ShanDong"
-
},
-
43267432:{
-
"name": "DaShanPao",
-
"age": 24,
-
"addr": "DongBei"
-
}
-
}
-
dic2 = {
-
22323232: {
-
"name": "DaShaXXXXXXX",
-
"age": 22,
-
"addr": "ShanDong"
-
},
-
"name": "acong",
-
43267432: "xxxxxx"
-
}
-
print(id_db)
-
id_db.update(dic2)
-
print(id_db)
-
-
# 输出
-
-
{22323232: {'addr': 'ShanDong', 'name': 'ShanPao', 'age': 22}, 43267432: {'addr': 'DongBei', 'name': 'DaShanPao', 'age': 24}}
-
{22323232: {'addr': 'ShanDong', 'name': 'DaShaXXXXXXX', 'age': 22}, 43267432: 'xxxxxx', 'name': 'acong'}
-
- items() # 将字典的key和value放到一个元组中,多组key和value放入到到一个列表中,转成这种格式: [(key, value), (key, value)]
-
id_db = {
-
22323232: {
-
"name": "ShanPao",
-
"age": 22,
-
"addr": "ShanDong"
-
},
-
43267432:{
-
"name": "DaShanPao",
-
"age": 24,
-
"addr": "DongBei"
-
}
-
}
-
print(id_db.items())
-
-
# 输出
-
-
dict_items([(22323232, {'age': 22, 'addr': 'ShanDong', 'name': 'ShanPao'}), (43267432, {'age': 24, 'addr': 'DongBei', 'name': 'DaShanPao'})])
-
- keys() # 输出字典所有的key
-
id_db = {
-
22323232: {
-
"name": "ShanPao",
-
"age": 22,
-
"addr": "ShanDong"
-
},
-
43267432:{
-
"name": "DaShanPao",
-
"age": 24,
-
"addr": "DongBei"
-
}
-
}
-
print(id_db.keys())
-
-
# 输出
-
-
dict_keys([22323232, 43267432])
-
- values() # 输出字典所有的value
-
id_db = {
-
22323232: {
-
"name": "ShanPao",
-
"age": 22,
-
"addr": "ShanDong"
-
},
-
43267432:{
-
"name": "DaShanPao",
-
"age": 24,
-
"addr": "DongBei"
-
}
-
}
-
print(id_db.values())
-
-
# 输出
-
-
dict_values([{'name': 'ShanPao', 'addr': 'ShanDong', 'age': 22}, {'name': 'DaShanPao', 'addr': 'DongBei', 'age': 24}])
-
- has_key() # 查找key是否在字典中存在,只能在python2里面使用,python3使用in判断
- setdefault() # 指定一个key,如果字典存在这个key,则返回该key的值,否则创建这个key,如果setdefault()括号内为空,则创建的key的value 为None,否则为该括号内填写的值
-
id_db = {
-
22323232: {
-
"name": "ShanPao",
-
"age": 22,
-
"addr": "ShanDong"
-
},
-
43267432:{
-
"name": "DaShanPao",
-
"age": 24,
-
"addr": "DongBei"
-
}
-
}
-
value = id_db.setdefault(43267432)
-
print(value)
-
value2 = id_db.setdefault(432674323232)
-
print(value2)
-
print(id_db)
-
-
# 输出
-
-
{'addr': 'DongBei', 'name': 'DaShanPao', 'age': 24}
-
None
-
{22323232: {'addr': 'ShanDong', 'name': 'ShanPao', 'age': 22}, 43267432: {'addr': 'DongBei', 'name': 'DaShanPao', 'age': 24}, 432674323232: None}
-
- popitem() # 随机删除字典中的指定的key
-
id_db = {
-
22323232: {
-
"name": "ShanPao",
-
"age": 22,
-
"addr": "ShanDong"
-
},
-
43267432:{
-
"name": "DaShanPao",
-
"age": 24,
-
"addr": "DongBei"
-
}
-
}
-
print(id_db.popitem())
-
print(id_db)
-
-
# 输出
-
-
(22323232, {'age': 22, 'addr': 'ShanDong', 'name': 'ShanPao'})
-
{43267432: {'age': 24, 'addr': 'DongBei', 'name': 'DaShanPao'}}
-
- pop() # 对指定key进行删除,并返回其value
一:数字 int
int(整型):
在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647
在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807
long(长整型):
跟C语言不同,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大
注意:自从python2.2起,如果整数发生溢出,python会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母L也不会导致严重后果了
float(浮点型):
浮点数用来处理实数,即带有小数的数字,类似于C语言中的double类型,占8个字节(64位),其中52位表示底,11位表示指数,剩下一位表示符号
- class int(object):
- """
- int(x=0) -> int or long
- int(x, base=10) -> int or long
- Convert a number or string to an integer, or return 0 if no arguments
- are given. If x is floating point, the conversion truncates towards zero.
- If x is outside the integer range, the function returns a long instead.
- If x is not a number or if base is given, then x must be a string or
- Unicode object representing an integer literal in the given base. The
- literal can be preceded by '+' or '-' and be surrounded by whitespace.
- The base defaults to 10. Valid bases are 0 and 2-36. Base 0 means to
- interpret the base from the string as an integer literal.
- >>> int('0b100', base=0)
- """
- def bit_length(self):
- """ 返回表示该数字的时占用的最少位数 """
- """
- int.bit_length() -> int
- Number of bits necessary to represent self in binary.
- >>> bin(37)
- '0b100101'
- >>> (37).bit_length()
- """
- return 0
- def conjugate(self, *args, **kwargs): # real signature unknown
- """ 返回该复数的共轭复数 """
- """ Returns self, the complex conjugate of any int. """
- pass
- def __abs__(self):
- """ 返回绝对值 """
- """ x.__abs__() <==> abs(x) """
- pass
- def __add__(self, y):
- """ x.__add__(y) <==> x+y """
- pass
- def __and__(self, y):
- """ x.__and__(y) <==> x&y """
- pass
- def __cmp__(self, y):
- """ 比较两个数大小 """
- """ x.__cmp__(y) <==> cmp(x,y) """
- pass
- def __coerce__(self, y):
- """ 强制生成一个元组 """
- """ x.__coerce__(y) <==> coerce(x, y) """
- pass
- def __divmod__(self, y):
- """ 相除,得到商和余数组成的元组 """
- """ x.__divmod__(y) <==> divmod(x, y) """
- pass
- def __div__(self, y):
- """ x.__div__(y) <==> x/y """
- pass
- def __float__(self):
- """ 转换为浮点类型 """
- """ x.__float__() <==> float(x) """
- pass
- def __floordiv__(self, y):
- """ x.__floordiv__(y) <==> x//y """
- pass
- def __format__(self, *args, **kwargs): # real signature unknown
- pass
- def __getattribute__(self, name):
- """ x.__getattribute__('name') <==> x.name """
- pass
- def __getnewargs__(self, *args, **kwargs): # real signature unknown
- """ 内部调用 __new__方法或创建对象时传入参数使用 """
- pass
- def __hash__(self):
- """如果对象object为哈希表类型,返回对象object的哈希值。哈希值为整数。在字典查找中,哈希值用于快速比较字典的键。两个数值如果相等,则哈希值也相等。"""
- """ x.__hash__() <==> hash(x) """
- pass
- def __hex__(self):
- """ 返回当前数的 十六进制 表示 """
- """ x.__hex__() <==> hex(x) """
- pass
- def __index__(self):
- """ 用于切片,数字无意义 """
- """ x[y:z] <==> x[y.__index__():z.__index__()] """
- pass
- def __init__(self, x, base=10): # known special case of int.__init__
- """ 构造方法,执行 x = 123 或 x = int(10) 时,自动调用,暂时忽略 """
- """
- int(x=0) -> int or long
- int(x, base=10) -> int or long
- Convert a number or string to an integer, or return 0 if no arguments
- are given. If x is floating point, the conversion truncates towards zero.
- If x is outside the integer range, the function returns a long instead.
- If x is not a number or if base is given, then x must be a string or
- Unicode object representing an integer literal in the given base. The
- literal can be preceded by '+' or '-' and be surrounded by whitespace.
- The base defaults to 10. Valid bases are 0 and 2-36. Base 0 means to
- interpret the base from the string as an integer literal.
- >>> int('0b100', base=0)
- # (copied from class doc)
- """
- pass
- def __int__(self):
- """ 转换为整数 """
- """ x.__int__() <==> int(x) """
- pass
- def __invert__(self):
- """ x.__invert__() <==> ~x """
- pass
- def __long__(self):
- """ 转换为长整数 """
- """ x.__long__() <==> long(x) """
- pass
- def __lshift__(self, y):
- """ x.__lshift__(y) <==> x<<y """
- pass
- def __mod__(self, y):
- """ x.__mod__(y) <==> x%y """
- pass
- def __mul__(self, y):
- """ x.__mul__(y) <==> x*y """
- pass
- def __neg__(self):
- """ x.__neg__() <==> -x """
- pass
- @staticmethod # known case of __new__
- def __new__(S, *more):
- """ T.__new__(S, ...) -> a new object with type S, a subtype of T """
- pass
- def __nonzero__(self):
- """ x.__nonzero__() <==> x != 0 """
- pass
- def __oct__(self):
- """ 返回改值的 八进制 表示 """
- """ x.__oct__() <==> oct(x) """
- pass
- def __or__(self, y):
- """ x.__or__(y) <==> x|y """
- pass
- def __pos__(self):
- """ x.__pos__() <==> +x """
- pass
- def __pow__(self, y, z=None):
- """ 幂,次方 """
- """ x.__pow__(y[, z]) <==> pow(x, y[, z]) """
- pass
- def __radd__(self, y):
- """ x.__radd__(y) <==> y+x """
- pass
- def __rand__(self, y):
- """ x.__rand__(y) <==> y&x """
- pass
- def __rdivmod__(self, y):
- """ x.__rdivmod__(y) <==> divmod(y, x) """
- pass
- def __rdiv__(self, y):
- """ x.__rdiv__(y) <==> y/x """
- pass
- def __repr__(self):
- """转化为解释器可读取的形式 """
- """ x.__repr__() <==> repr(x) """
- pass
- def __str__(self):
- """转换为人阅读的形式,如果没有适于人阅读的解释形式的话,则返回解释器课阅读的形式"""
- """ x.__str__() <==> str(x) """
- pass
- def __rfloordiv__(self, y):
- """ x.__rfloordiv__(y) <==> y//x """
- pass
- def __rlshift__(self, y):
- """ x.__rlshift__(y) <==> y<<x """
- pass
- def __rmod__(self, y):
- """ x.__rmod__(y) <==> y%x """
- pass
- def __rmul__(self, y):
- """ x.__rmul__(y) <==> y*x """
- pass
- def __ror__(self, y):
- """ x.__ror__(y) <==> y|x """
- pass
- def __rpow__(self, x, z=None):
- """ y.__rpow__(x[, z]) <==> pow(x, y[, z]) """
- pass
- def __rrshift__(self, y):
- """ x.__rrshift__(y) <==> y>>x """
- pass
- def __rshift__(self, y):
- """ x.__rshift__(y) <==> x>>y """
- pass
- def __rsub__(self, y):
- """ x.__rsub__(y) <==> y-x """
- pass
- def __rtruediv__(self, y):
- """ x.__rtruediv__(y) <==> y/x """
- pass
- def __rxor__(self, y):
- """ x.__rxor__(y) <==> y^x """
- pass
- def __sub__(self, y):
- """ x.__sub__(y) <==> x-y """
- pass
- def __truediv__(self, y):
- """ x.__truediv__(y) <==> x/y """
- pass
- def __trunc__(self, *args, **kwargs):
- """ 返回数值被截取为整形的值,在整形中无意义 """
- pass
- def __xor__(self, y):
- """ x.__xor__(y) <==> x^y """
- pass
- denominator = property(lambda self: object(), lambda self, v: None, lambda self: None) # default
- """ 分母 = 1 """
- """the denominator of a rational number in lowest terms"""
- imag = property(lambda self: object(), lambda self, v: None, lambda self: None) # default
- """ 虚数,无意义 """
- """the imaginary part of a complex number"""
- numerator = property(lambda self: object(), lambda self, v: None, lambda self: None) # default
- """ 分子 = 数字大小 """
- """the numerator of a rational number in lowest terms"""
- real = property(lambda self: object(), lambda self, v: None, lambda self: None) # default
- """ 实属,无意义 """
- """the real part of a complex number"""
- int
int
二:字符串 str
- class str(basestring):
- """
- str(object='') -> string
- Return a nice string representation of the object.
- If the argument is a string, the return value is the same object.
- """
- def capitalize(self):
- """ 首字母变大写 """
- """
- S.capitalize() -> string
- Return a copy of the string S with only its first character
- capitalized.
- """
- return ""
- def center(self, width, fillchar=None):
- """ 内容居中,width:总长度;fillchar:空白处填充内容,默认无 """
- """
- S.center(width[, fillchar]) -> string
- Return S centered in a string of length width. Padding is
- done using the specified fill character (default is a space)
- """
- return ""
- def count(self, sub, start=None, end=None):
- """ 子序列个数 """
- """
- S.count(sub[, start[, end]]) -> int
- Return the number of non-overlapping occurrences of substring sub in
- string S[start:end]. Optional arguments start and end are interpreted
- as in slice notation.
- """
- return 0
- def decode(self, encoding=None, errors=None):
- """ 解码 """
- """
- S.decode([encoding[,errors]]) -> object
- Decodes S using the codec registered for encoding. encoding defaults
- to the default encoding. errors may be given to set a different error
- handling scheme. Default is 'strict' meaning that encoding errors raise
- a UnicodeDecodeError. Other possible values are 'ignore' and 'replace'
- as well as any other name registered with codecs.register_error that is
- able to handle UnicodeDecodeErrors.
- """
- return object()
- def encode(self, encoding=None, errors=None):
- """ 编码,针对unicode """
- """
- S.encode([encoding[,errors]]) -> object
- Encodes S using the codec registered for encoding. encoding defaults
- to the default encoding. errors may be given to set a different error
- handling scheme. Default is 'strict' meaning that encoding errors raise
- a UnicodeEncodeError. Other possible values are 'ignore', 'replace' and
- 'xmlcharrefreplace' as well as any other name registered with
- codecs.register_error that is able to handle UnicodeEncodeErrors.
- """
- return object()
- def endswith(self, suffix, start=None, end=None):
- """ 是否以 xxx 结束 """
- """
- S.endswith(suffix[, start[, end]]) -> bool
- Return True if S ends with the specified suffix, False otherwise.
- With optional start, test S beginning at that position.
- With optional end, stop comparing S at that position.
- suffix can also be a tuple of strings to try.
- """
- return False
- def expandtabs(self, tabsize=None):
- """ 将tab转换成空格,默认一个tab转换成8个空格 """
- """
- S.expandtabs([tabsize]) -> string
- Return a copy of S where all tab characters are expanded using spaces.
- If tabsize is not given, a tab size of 8 characters is assumed.
- """
- return ""
- def find(self, sub, start=None, end=None):
- """ 寻找子序列位置,如果没找到,返回 -1 """
- """
- S.find(sub [,start [,end]]) -> int
- Return the lowest index in S where substring sub is found,
- such that sub is contained within S[start:end]. Optional
- arguments start and end are interpreted as in slice notation.
- Return -1 on failure.
- """
- return 0
- def format(*args, **kwargs): # known special case of str.format
- """ 字符串格式化,动态参数,将函数式编程时细说 """
- """
- S.format(*args, **kwargs) -> string
- Return a formatted version of S, using substitutions from args and kwargs.
- The substitutions are identified by braces ('{' and '}').
- """
- pass
- def index(self, sub, start=None, end=None):
- """ 子序列位置,如果没找到,报错 """
- S.index(sub [,start [,end]]) -> int
- Like S.find() but raise ValueError when the substring is not found.
- """
- return 0
- def isalnum(self):
- """ 是否是字母和数字 """
- """
- S.isalnum() -> bool
- Return True if all characters in S are alphanumeric
- and there is at least one character in S, False otherwise.
- """
- return False
- def isalpha(self):
- """ 是否是字母 """
- """
- S.isalpha() -> bool
- Return True if all characters in S are alphabetic
- and there is at least one character in S, False otherwise.
- """
- return False
- def isdigit(self):
- """ 是否是数字 """
- """
- S.isdigit() -> bool
- Return True if all characters in S are digits
- and there is at least one character in S, False otherwise.
- """
- return False
- def islower(self):
- """ 是否小写 """
- """
- S.islower() -> bool
- Return True if all cased characters in S are lowercase and there is
- at least one cased character in S, False otherwise.
- """
- return False
- def isspace(self):
- """
- S.isspace() -> bool
- Return True if all characters in S are whitespace
- and there is at least one character in S, False otherwise.
- """
- return False
- def istitle(self):
- """
- S.istitle() -> bool
- Return True if S is a titlecased string and there is at least one
- character in S, i.e. uppercase characters may only follow uncased
- characters and lowercase characters only cased ones. Return False
- otherwise.
- """
- return False
- def isupper(self):
- """
- S.isupper() -> bool
- Return True if all cased characters in S are uppercase and there is
- at least one cased character in S, False otherwise.
- """
- return False
- def join(self, iterable):
- """ 连接 """
- """
- S.join(iterable) -> string
- Return a string which is the concatenation of the strings in the
- iterable. The separator between elements is S.
- """
- return ""
- def ljust(self, width, fillchar=None):
- """ 内容左对齐,右侧填充 """
- """
- S.ljust(width[, fillchar]) -> string
- Return S left-justified in a string of length width. Padding is
- done using the specified fill character (default is a space).
- """
- return ""
- def lower(self):
- """ 变小写 """
- """
- S.lower() -> string
- Return a copy of the string S converted to lowercase.
- """
- return ""
- def lstrip(self, chars=None):
- """ 移除左侧空白 """
- """
- S.lstrip([chars]) -> string or unicode
- Return a copy of the string S with leading whitespace removed.
- If chars is given and not None, remove characters in chars instead.
- If chars is unicode, S will be converted to unicode before stripping
- """
- return ""
- def partition(self, sep):
- """ 分割,前,中,后三部分 """
- """
- S.partition(sep) -> (head, sep, tail)
- Search for the separator sep in S, and return the part before it,
- the separator itself, and the part after it. If the separator is not
- found, return S and two empty strings.
- """
- pass
- def replace(self, old, new, count=None):
- """ 替换 """
- """
- S.replace(old, new[, count]) -> string
- Return a copy of string S with all occurrences of substring
- old replaced by new. If the optional argument count is
- given, only the first count occurrences are replaced.
- """
- return ""
- def rfind(self, sub, start=None, end=None):
- """
- S.rfind(sub [,start [,end]]) -> int
- Return the highest index in S where substring sub is found,
- such that sub is contained within S[start:end]. Optional
- arguments start and end are interpreted as in slice notation.
- Return -1 on failure.
- """
- return 0
- def rindex(self, sub, start=None, end=None):
- """
- S.rindex(sub [,start [,end]]) -> int
- Like S.rfind() but raise ValueError when the substring is not found.
- """
- return 0
- def rjust(self, width, fillchar=None):
- """
- S.rjust(width[, fillchar]) -> string
- Return S right-justified in a string of length width. Padding is
- done using the specified fill character (default is a space)
- """
- return ""
- def rpartition(self, sep):
- """
- S.rpartition(sep) -> (head, sep, tail)
- Search for the separator sep in S, starting at the end of S, and return
- the part before it, the separator itself, and the part after it. If the
- separator is not found, return two empty strings and S.
- """
- pass
- def rsplit(self, sep=None, maxsplit=None):
- """
- S.rsplit([sep [,maxsplit]]) -> list of strings
- Return a list of the words in the string S, using sep as the
- delimiter string, starting at the end of the string and working
- to the front. If maxsplit is given, at most maxsplit splits are
- done. If sep is not specified or is None, any whitespace string
- is a separator.
- """
- return []
- def rstrip(self, chars=None):
- """
- S.rstrip([chars]) -> string or unicode
- Return a copy of the string S with trailing whitespace removed.
- If chars is given and not None, remove characters in chars instead.
- If chars is unicode, S will be converted to unicode before stripping
- """
- return ""
- def split(self, sep=None, maxsplit=None):
- """ 分割, maxsplit最多分割几次 """
- """
- S.split([sep [,maxsplit]]) -> list of strings
- Return a list of the words in the string S, using sep as the
- delimiter string. If maxsplit is given, at most maxsplit
- splits are done. If sep is not specified or is None, any
- whitespace string is a separator and empty strings are removed
- from the result.
- """
- return []
- def splitlines(self, keepends=False):
- """ 根据换行分割 """
- """
- S.splitlines(keepends=False) -> list of strings
- Return a list of the lines in S, breaking at line boundaries.
- Line breaks are not included in the resulting list unless keepends
- is given and true.
- """
- return []
- def startswith(self, prefix, start=None, end=None):
- """ 是否起始 """
- """
- S.startswith(prefix[, start[, end]]) -> bool
- Return True if S starts with the specified prefix, False otherwise.
- With optional start, test S beginning at that position.
- With optional end, stop comparing S at that position.
- prefix can also be a tuple of strings to try.
- """
- return False
- def strip(self, chars=None):
- """ 移除两段空白 """
- """
- S.strip([chars]) -> string or unicode
- Return a copy of the string S with leading and trailing
- whitespace removed.
- If chars is given and not None, remove characters in chars instead.
- If chars is unicode, S will be converted to unicode before stripping
- """
- return ""
- def swapcase(self):
- """ 大写变小写,小写变大写 """
- """
- S.swapcase() -> string
- Return a copy of the string S with uppercase characters
- converted to lowercase and vice versa.
- """
- return ""
- def title(self):
- """
- S.title() -> string
- Return a titlecased version of S, i.e. words start with uppercase
- characters, all remaining cased characters have lowercase.
- """
- return ""
- def translate(self, table, deletechars=None):
- """
- 转换,需要先做一个对应表,最后一个表示删除字符集合
- intab = "aeiou"
- outtab = ""
- trantab = maketrans(intab, outtab)
- str = "this is string example....wow!!!"
- print str.translate(trantab, 'xm')
- """
- """
- S.translate(table [,deletechars]) -> string
- Return a copy of the string S, where all characters occurring
- in the optional argument deletechars are removed, and the
- remaining characters have been mapped through the given
- translation table, which must be a string of length 256 or None.
- If the table argument is None, no translation is applied and
- the operation simply removes the characters in deletechars.
- """
- return ""
- def upper(self):
- """
- S.upper() -> string
- Return a copy of the string S converted to uppercase.
- """
- return ""
- def zfill(self, width):
- """方法返回指定长度的字符串,原字符串右对齐,前面填充0。"""
- """
- S.zfill(width) -> string
- Pad a numeric string S with zeros on the left, to fill a field
- of the specified width. The string S is never truncated.
- """
- return ""
- def _formatter_field_name_split(self, *args, **kwargs): # real signature unknown
- pass
- def _formatter_parser(self, *args, **kwargs): # real signature unknown
- pass
- def __add__(self, y):
- """ x.__add__(y) <==> x+y """
- pass
- def __contains__(self, y):
- """ x.__contains__(y) <==> y in x """
- pass
- def __eq__(self, y):
- """ x.__eq__(y) <==> x==y """
- pass
- def __format__(self, format_spec):
- """
- S.__format__(format_spec) -> string
- Return a formatted version of S as described by format_spec.
- """
- return ""
- def __getattribute__(self, name):
- """ x.__getattribute__('name') <==> x.name """
- pass
- def __getitem__(self, y):
- """ x.__getitem__(y) <==> x[y] """
- pass
- def __getnewargs__(self, *args, **kwargs): # real signature unknown
- pass
- def __getslice__(self, i, j):
- """
- x.__getslice__(i, j) <==> x[i:j]
- Use of negative indices is not supported.
- """
- pass
- def __ge__(self, y):
- """ x.__ge__(y) <==> x>=y """
- pass
- def __gt__(self, y):
- """ x.__gt__(y) <==> x>y """
- pass
- def __hash__(self):
- """ x.__hash__() <==> hash(x) """
- pass
- def __init__(self, string=''): # known special case of str.__init__
- """
- str(object='') -> string
- Return a nice string representation of the object.
- If the argument is a string, the return value is the same object.
- # (copied from class doc)
- """
- pass
- def __len__(self):
- """ x.__len__() <==> len(x) """
- pass
- def __le__(self, y):
- """ x.__le__(y) <==> x<=y """
- pass
- def __lt__(self, y):
- """ x.__lt__(y) <==> x<y """
- pass
- def __mod__(self, y):
- """ x.__mod__(y) <==> x%y """
- pass
- def __mul__(self, n):
- """ x.__mul__(n) <==> x*n """
- pass
- @staticmethod # known case of __new__
- def __new__(S, *more):
- """ T.__new__(S, ...) -> a new object with type S, a subtype of T """
- pass
- def __ne__(self, y):
- """ x.__ne__(y) <==> x!=y """
- pass
- def __repr__(self):
- """ x.__repr__() <==> repr(x) """
- pass
- def __rmod__(self, y):
- """ x.__rmod__(y) <==> y%x """
- pass
- def __rmul__(self, n):
- """ x.__rmul__(n) <==> n*x """
- pass
- def __sizeof__(self):
- """ S.__sizeof__() -> size of S in memory, in bytes """
- pass
- def __str__(self):
- """ x.__str__() <==> str(x) """
- pass
- str
str
字符串是 Python 中最常用的数据类型。我们可以使用引号,双引号,或三引号来创建字符串。
- a = 'poe'
- b = "bruce"
- c = """Jacky Chen"""
1:字符串连接
方法一:join方法
- a = ['a','b','c','d']
- content = ''
- content = ' '.join(a)
- print(content)
方法二:用字符串的替换占位符替换
- a = ['a','b','c','d']
- content = ''
- content = '%s%s%s%s' % tuple(a)
- print(content)
方法三:for循环
- a = ['a','b','c','d']
- content = ''
- for i in a:
- content += i
- print(content)
注意:方法三效率低,不推荐使用!
原因:在循环连接字符串的时候,他每次连接一次,就要重新开辟空间,然后把字符串连接起来,再放入新的空间,再一次循环,又要开辟新的空间,把字符串连接起来放入新的空间,如此反复,内存操作比较频繁,每次都要计算内存空间,然后开辟内存空间,再释放内存空间,效率非常低,你也许操作比较少的数据的时候看不出来,感觉影响不大,但是你碰到操作数据量比较多的时候,这个方法就要退休了。
2:字符串截取
我们可以通过索引来提取想要获取的字符,可以把python的字符串也做为字符串的列表就更好理解
python的字串列表有2种取值顺序:
1是从左到右索引默认0开始的,最大范围是字符串长度少1
- s = 'ilovepython'
- s[0]的结果是i
2是从右到左索引默认-1开始的,最大范围是字符串开头
- s = 'ilovepython'
- s[-1]的结果是n
上面这个是取得一个字符,如果你的实际要取得一段子串的话,可以用到变量[头下标:尾下标],就可以截取相应的字符串,其中下标是从0开始算起,可以是正数或负数,下标可以为空表示取到头或尾。
比如
- s = 'ilovepython'
- s[1:5]的结果是love
当使用以冒号分隔的字符串,python返回一个新的对象,结果包含了以这对偏移标识的连续的内容,左边的开始是包含了下边界,比如上面的结果包含了s[1]的值l,而取到的最大范围不包括上边界,就是s[5]的值p
注:s[1:5]形式截头不截尾
3:字符串替换
方法一:使用repalce方法
- a = 'hello world'
- b = a.replace('world','python')
- print(b)
方法二:使用正则表达式
- import re
- a = 'hello world'
- strinfo = re.compile('world')
- b = strinfo.sub('python',a)
- print(b)
4:字符串比较
cmp方法比较两个对象,并根据结果返回一个整数。cmp(x,y)如果X< Y,返回值是负数 如果X>Y 返回的值为正数。
- str1 = 'strch'
- str2 = 'strchr'
- print(cmp(str1,str2))
- ## -1
5:字符串相加
我们通过操作符号+来进行字符串的相加,不过建议还是用其他的方式来进行字符串的拼接,这样效率高点。
原因:在循环连接字符串的时候,他每次连接一次,就要重新开辟空间,然后把字符串连接起来,再放入新的空间,再一次循环,又要开辟新的空间,把字符串连接起来放入新的空间,如此反复,内存操作比较频繁,每次都要计算内存空间,然后开辟内存空间,再释放内存空间,效率非常低。
- str1 = 'strch'
- str2 = 'strchr'
- print(str1+str2)
- ## strchstrchr
6:字符串查找
python 字符串查找有4个方法,1 find,2 index方法,3 rfind方法,4 rindex方法。
方法一:find方法
- info = 'abca'
- print info.find('a')##从下标0开始,查找在字符串里第一个出现的子串,返回结果:0
- info = 'abca'
- print info.find('a',1)##从下标1开始,查找在字符串里第一个出现的子串:返回结果3
- info = 'abca'
- print info.find('')##返回-1,查找不到返回-1
方法二:index方法
python 的index方法是在字符串里查找子串第一次出现的位置,类似字符串的find方法,不过比find方法更好的是,如果查找不到子串,会抛出异常,而不是返回-1
- info = 'abca'
- print info.index('a')
- print info.index('')
7:字符串分割
字符串分割,可以用split,rsplit方法,通过相应的规则来切割成生成列表对象
- info = 'name:haha,age:20$name:python,age:30$name:fef,age:55'
- content = info.split('$')
- print content
- ## ['name:haha,age:20', 'name:python,age:30', 'name:fef,age:55']
8:字符串反转
- a = 'abcd'
- b = a[::-1]##[::-1]通过步进反转
- print b
9:字符串编码
10:字符串追加和拼接
通过字符串的占位符来进行字符串的拼接
- #1 元组拼接
- m = 'python'
- astr = 'i love %s' % m
- print astr
- #2 字符串的format方法
- m = 'python'
- astr = "i love {python}".format(python=m)
- print astr
- #3 字典格式化字符串
- m = 'python'
- astr = "i love %(python)s " % {'python':m}
- print astr
11:字符串复制
- #通过变量来进行赋值
- fstr = 'strcpy'
- sstr = fstr
- fstr = 'strcpy2'
- print sstr
12:字符串长度
- #通过内置方法len()来计算字符串的长度,注意这个计算的是字符的长度。
- aa = 'afebb'
- bb = '你'
- print len(aa)
- print len(bb)
13:字符串大小写
- #通过下面的upper(),lower()等方法来转换大小写
- S.upper()#S中的字母大写
- S.lower() #S中的字母小写
- S.capitalize() #首字母大写
- S.istitle() #S是否是首字母大写的
- S.isupper() #S中的字母是否便是大写
- S.islower() #S中的字母是否全是小写
14:字符串去空格
- #通过strip(),lstrip(),rstrip()方法去除字符串的空格
- S.strip() #去掉字符串的左右空格
- S.lstrip() #去掉字符串的左边空格
- S.rstrip() #去掉字符串的右边空格
- #注意:strip()函数不仅可以去空格还可以去除指定的字符,如
- S.strip("\n")
15:字符串其他方法
- #字符串相关的其他方法:count(),join()方法等。
- S.center(width, [fillchar]) #中间对齐
- S.count(substr, [start, [end]]) #计算substr在S中出现的次数
- S.expandtabs([tabsize]) #把S中的tab字符替换没空格,每个tab替换为tabsize个空格,默认是8个
- S.isalnum() #是否全是字母和数字,并至少有一个字符
- S.isalpha() #是否全是字母,并至少有一个字符
- S.isspace() #是否全是空白字符,并至少有一个字符
- S.join()#S中的join,把列表生成一个字符串对象
- S.ljust(width,[fillchar]) #输出width个字符,S左对齐,不足部分用fillchar填充,默认的为空格。
- S.rjust(width,[fillchar]) #右对齐
- S.splitlines([keepends]) #把S按照行分割符分为一个list,keepends是一个bool值,如果为真每行后而会保留行分割符。
- S.swapcase() #大小写互换
三:列表 list
- class list(object):
- """
- list() -> new empty list
- list(iterable) -> new list initialized from iterable's items
- """
- def append(self, p_object): # real signature unknown; restored from __doc__
- """ L.append(object) -- append object to end """
- pass
- def count(self, value): # real signature unknown; restored from __doc__
- """ L.count(value) -> integer -- return number of occurrences of value """
- return 0
- def extend(self, iterable): # real signature unknown; restored from __doc__
- """ L.extend(iterable) -- extend list by appending elements from the iterable """
- pass
- def index(self, value, start=None, stop=None): # real signature unknown; restored from __doc__
- """
- L.index(value, [start, [stop]]) -> integer -- return first index of value.
- Raises ValueError if the value is not present.
- """
- return 0
- def insert(self, index, p_object): # real signature unknown; restored from __doc__
- """ L.insert(index, object) -- insert object before index """
- pass
- def pop(self, index=None): # real signature unknown; restored from __doc__
- """
- L.pop([index]) -> item -- remove and return item at index (default last).
- Raises IndexError if list is empty or index is out of range.
- """
- pass
- def remove(self, value): # real signature unknown; restored from __doc__
- """
- L.remove(value) -- remove first occurrence of value.
- Raises ValueError if the value is not present.
- """
- pass
- def reverse(self): # real signature unknown; restored from __doc__
- """ L.reverse() -- reverse *IN PLACE* """
- pass
- def sort(self, cmp=None, key=None, reverse=False): # real signature unknown; restored from __doc__
- """
- L.sort(cmp=None, key=None, reverse=False) -- stable sort *IN PLACE*;
- cmp(x, y) -> -1, 0, 1
- """
- pass
- def __add__(self, y): # real signature unknown; restored from __doc__
- """ x.__add__(y) <==> x+y """
- pass
- def __contains__(self, y): # real signature unknown; restored from __doc__
- """ x.__contains__(y) <==> y in x """
- pass
- def __delitem__(self, y): # real signature unknown; restored from __doc__
- """ x.__delitem__(y) <==> del x[y] """
- pass
- def __delslice__(self, i, j): # real signature unknown; restored from __doc__
- """
- x.__delslice__(i, j) <==> del x[i:j]
- Use of negative indices is not supported.
- """
- pass
- def __eq__(self, y): # real signature unknown; restored from __doc__
- """ x.__eq__(y) <==> x==y """
- pass
- def __getattribute__(self, name): # real signature unknown; restored from __doc__
- """ x.__getattribute__('name') <==> x.name """
- pass
- def __getitem__(self, y): # real signature unknown; restored from __doc__
- """ x.__getitem__(y) <==> x[y] """
- pass
- def __getslice__(self, i, j): # real signature unknown; restored from __doc__
- """
- x.__getslice__(i, j) <==> x[i:j]
- Use of negative indices is not supported.
- """
- pass
- def __ge__(self, y): # real signature unknown; restored from __doc__
- """ x.__ge__(y) <==> x>=y """
- pass
- def __gt__(self, y): # real signature unknown; restored from __doc__
- """ x.__gt__(y) <==> x>y """
- pass
- def __iadd__(self, y): # real signature unknown; restored from __doc__
- """ x.__iadd__(y) <==> x+=y """
- pass
- def __imul__(self, y): # real signature unknown; restored from __doc__
- """ x.__imul__(y) <==> x*=y """
- pass
- def __init__(self, seq=()): # known special case of list.__init__
- """
- list() -> new empty list
- list(iterable) -> new list initialized from iterable's items
- # (copied from class doc)
- """
- pass
- def __iter__(self): # real signature unknown; restored from __doc__
- """ x.__iter__() <==> iter(x) """
- pass
- def __len__(self): # real signature unknown; restored from __doc__
- """ x.__len__() <==> len(x) """
- pass
- def __le__(self, y): # real signature unknown; restored from __doc__
- """ x.__le__(y) <==> x<=y """
- pass
- def __lt__(self, y): # real signature unknown; restored from __doc__
- """ x.__lt__(y) <==> x<y """
- pass
- def __mul__(self, n): # real signature unknown; restored from __doc__
- """ x.__mul__(n) <==> x*n """
- pass
- @staticmethod # known case of __new__
- def __new__(S, *more): # real signature unknown; restored from __doc__
- """ T.__new__(S, ...) -> a new object with type S, a subtype of T """
- pass
- def __ne__(self, y): # real signature unknown; restored from __doc__
- """ x.__ne__(y) <==> x!=y """
- pass
- def __repr__(self): # real signature unknown; restored from __doc__
- """ x.__repr__() <==> repr(x) """
- pass
- def __reversed__(self): # real signature unknown; restored from __doc__
- """ L.__reversed__() -- return a reverse iterator over the list """
- pass
- def __rmul__(self, n): # real signature unknown; restored from __doc__
- """ x.__rmul__(n) <==> n*x """
- pass
- def __setitem__(self, i, y): # real signature unknown; restored from __doc__
- """ x.__setitem__(i, y) <==> x[i]=y """
- pass
- def __setslice__(self, i, j, y): # real signature unknown; restored from __doc__
- """
- x.__setslice__(i, j, y) <==> x[i:j]=y
- Use of negative indices is not supported.
- """
- pass
- def __sizeof__(self): # real signature unknown; restored from __doc__
- """ L.__sizeof__() -- size of L in memory, in bytes """
- pass
- __hash__ = None
- list
list
1:创建列表
- list1 = ['physics', 'chemistry', 1997, 2000];
- list2 = [1, 2, 3, 4, 5 ];
- list3 = ["a", "b", "c", "d"];
与字符串的索引一样,列表索引从0开始。列表可以进行截取、组合等
2:访问列表
- list1 = ['physics', 'chemistry', 1997, 2000];
- list2 = [1, 2, 3, 4, 5, 6, 7 ];
- print(list1[0])
- print(list2[2:5])#截头不截尾
- ## physics
- ## [3, 4, 5]
3:append方法:在列表末尾添加新的对象
- aList = [123, 'xyz', 'zara', 'abc'];
- aList.append( 2009 );
- print "Updated List : ", aList;
- ## Updated List : [123, 'xyz', 'zara', 'abc', 2009]
4:count方法:统计某个元素在列表中出现的次数
- aList = [123, 'xyz', 'zara', 123];
- print(aList.count(123))
- ## 2
5:extend() 函数用于在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
- aList = [123, 'xyz', 'zara', 'abc', 123];
- bList = [2009, 'manni'];
- aList.extend(bList)
- print "Extended List : ", aList ;
- ## Extended List : [123, 'xyz', 'zara', 'abc', 123, 2009, 'manni']
6:index() 函数用于从列表中找出某个值第一个匹配项的索引位置
- aList = [123, 'xyz', 'zara', 'abc'];
- print "Index for xyz : ", aList.index( 'xyz' ) ;
- print "Index for zara : ", aList.index( 'zara' ) ;
- ##Index for xyz : 1
- ## Index for zara : 2
7:insert() 函数用于将指定对象插入列表的指定位置
- aList = [123, 'xyz', 'zara', 'abc']
- aList.insert( 3, 2009)
- print "Final List : ", aList
- ## Final List : [123, 'xyz', 'zara', 2009, 'abc']
insert()接收两个参数,list.insert(index, obj),第一个参数index为要插入的索引位置,第二个参数要插入的元素
8:pop() 函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
- aList = [123, 'xyz', 'zara', 'abc'];
- print "A List : ", aList.pop();
- print "B List : ", aList.pop();
- ## A List : abc
- ## B List : zara
9:remove() 函数用于移除列表中某个值的第一个匹配项
- aList = [123, 'xyz', 'zara', 'abc', 'xyz'];
- aList.remove('xyz');
- print "List : ", aList;
- aList.remove('abc');
- print "List : ", aList;
- ## List : [123, 'zara', 'abc', 'xyz']
- ## List : [123, 'zara', 'xyz']
10:列表的四种遍历方法
- aList = [123, 'xyz', 'zara', 123];
方法一:只遍历列表中的值
- for value in aList :
- print(value)
- ####################
- 123
- xyz
- zara
- 123
方法二:如果需要遍历列表中的索引与值,就需要用到enumerate
- for key,value in enumerate(aList) :
- print(key,value)
- ######################
- (0, 123)
- (1, 'xyz')
- (2, 'zara')
- (3, 123)
enumrate:为可迭代的对象添加序号,默认从0开始!因为列表的索引也是从0开始,所以我们在enumerate中不指定第二个参数,如有需要,可以指定从几开始,如下:
- for key,value in enumerate(aList,1) :
- print(key,value)
- ######################################
- (1, 123)
- (2, 'xyz')
- (3, 'zara')
- (4, 123)
方法三:
- for i in range(len(aList)) :
- print(i,aList[i])
- ##############################
- (0, 123)
- (1, 'xyz')
- (2, 'zara')
- (3, 123)
range和xrange:指定范围,生成指定的数字
方法四:使用iter()
- for i in iter(aList) :
- print(i)
- ##########################################
- 123
- xyz
- zara
- 123
四:元组 tuple
- lass tuple(object):
- """
- tuple() -> empty tuple
- tuple(iterable) -> tuple initialized from iterable's items
- If the argument is a tuple, the return value is the same object.
- """
- def count(self, value): # real signature unknown; restored from __doc__
- """ T.count(value) -> integer -- return number of occurrences of value """
- return 0
- def index(self, value, start=None, stop=None): # real signature unknown; restored from __doc__
- """
- T.index(value, [start, [stop]]) -> integer -- return first index of value.
- Raises ValueError if the value is not present.
- """
- return 0
- def __add__(self, y): # real signature unknown; restored from __doc__
- """ x.__add__(y) <==> x+y """
- pass
- def __contains__(self, y): # real signature unknown; restored from __doc__
- """ x.__contains__(y) <==> y in x """
- pass
- def __eq__(self, y): # real signature unknown; restored from __doc__
- """ x.__eq__(y) <==> x==y """
- pass
- def __getattribute__(self, name): # real signature unknown; restored from __doc__
- """ x.__getattribute__('name') <==> x.name """
- pass
- def __getitem__(self, y): # real signature unknown; restored from __doc__
- """ x.__getitem__(y) <==> x[y] """
- pass
- def __getnewargs__(self, *args, **kwargs): # real signature unknown
- pass
- def __getslice__(self, i, j): # real signature unknown; restored from __doc__
- """
- x.__getslice__(i, j) <==> x[i:j]
- Use of negative indices is not supported.
- """
- pass
- def __ge__(self, y): # real signature unknown; restored from __doc__
- """ x.__ge__(y) <==> x>=y """
- pass
- def __gt__(self, y): # real signature unknown; restored from __doc__
- """ x.__gt__(y) <==> x>y """
- pass
- def __hash__(self): # real signature unknown; restored from __doc__
- """ x.__hash__() <==> hash(x) """
- pass
- def __init__(self, seq=()): # known special case of tuple.__init__
- """
- tuple() -> empty tuple
- tuple(iterable) -> tuple initialized from iterable's items
- If the argument is a tuple, the return value is the same object.
- # (copied from class doc)
- """
- pass
- def __iter__(self): # real signature unknown; restored from __doc__
- """ x.__iter__() <==> iter(x) """
- pass
- def __len__(self): # real signature unknown; restored from __doc__
- """ x.__len__() <==> len(x) """
- pass
- def __le__(self, y): # real signature unknown; restored from __doc__
- """ x.__le__(y) <==> x<=y """
- pass
- def __lt__(self, y): # real signature unknown; restored from __doc__
- """ x.__lt__(y) <==> x<y """
- pass
- def __mul__(self, n): # real signature unknown; restored from __doc__
- """ x.__mul__(n) <==> x*n """
- pass
- @staticmethod # known case of __new__
- def __new__(S, *more): # real signature unknown; restored from __doc__
- """ T.__new__(S, ...) -> a new object with type S, a subtype of T """
- pass
- def __ne__(self, y): # real signature unknown; restored from __doc__
- """ x.__ne__(y) <==> x!=y """
- pass
- def __repr__(self): # real signature unknown; restored from __doc__
- """ x.__repr__() <==> repr(x) """
- pass
- def __rmul__(self, n): # real signature unknown; restored from __doc__
- """ x.__rmul__(n) <==> n*x """
- pass
- def __sizeof__(self): # real signature unknown; restored from __doc__
- """ T.__sizeof__() -- size of T in memory, in bytes """
- pass
- tuple
tuple
Python的元组与列表类似,不同之处在于元组的元素不能修改。元组使用小括号,列表使用方括号。元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可
tuple只有两个可使用的功能:count , index
1:创建元组
- tup1 = ();#创建空元组
- tup1 = (50,);#元组中只包含一个元素时,需要在元素后面添加逗号
元组与字符串类似,下标索引从0开始,可以进行截取,组合等。元组的访问与列表一样!
2:元组的连接组合
- tup1 = (12, 34.56);
- tup2 = ('abc', 'xyz');
- # 以下修改元组元素操作是非法的。
- # tup1[0] = 100;
- # 创建一个新的元组
- tup3 = tup1 + tup2;
- print tup3;
- ##########################################
- (12, 34.56, 'abc', 'xyz')
3:删除元组
元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组,如下实例:
- tup = ('physics', 'chemistry', 1997, 2000);
- print tup;
- del tup;
- print "After deleting tup : "
- print tup;
- ##########################################
- 以上实例元组被删除后,输出变量会有异常信息,输出如下所示:
- ('physics', 'chemistry', 1997, 2000)
- After deleting tup :
- Traceback (most recent call last):
- File "test.py", line 9, in <module>
- print tup;
- NameError: name 'tup' is not defined
五:字典 dict
- class dict(object):
- """
- dict() -> new empty dictionary
- dict(mapping) -> new dictionary initialized from a mapping object's
- (key, value) pairs
- dict(iterable) -> new dictionary initialized as if via:
- d = {}
- for k, v in iterable:
- d[k] = v
- dict(**kwargs) -> new dictionary initialized with the name=value pairs
- in the keyword argument list. For example: dict(one=1, two=2)
- """
- def clear(self): # real signature unknown; restored from __doc__
- """ 清除内容 """
- """ D.clear() -> None. Remove all items from D. """
- pass
- def copy(self): # real signature unknown; restored from __doc__
- """ 浅拷贝 """
- """ D.copy() -> a shallow copy of D """
- pass
- @staticmethod # known case
- def fromkeys(S, v=None): # real signature unknown; restored from __doc__
- """
- dict.fromkeys(S[,v]) -> New dict with keys from S and values equal to v.
- v defaults to None.
- """
- pass
- def get(self, k, d=None): # real signature unknown; restored from __doc__
- """ 根据key获取值,d是默认值 """
- """ D.get(k[,d]) -> D[k] if k in D, else d. d defaults to None. """
- pass
- def has_key(self, k): # real signature unknown; restored from __doc__
- """ 是否有key """
- """ D.has_key(k) -> True if D has a key k, else False """
- return False
- def items(self): # real signature unknown; restored from __doc__
- """ 所有项的列表形式 """
- """ D.items() -> list of D's (key, value) pairs, as 2-tuples """
- return []
- def iteritems(self): # real signature unknown; restored from __doc__
- """ 项可迭代 """
- """ D.iteritems() -> an iterator over the (key, value) items of D """
- pass
- def iterkeys(self): # real signature unknown; restored from __doc__
- """ key可迭代 """
- """ D.iterkeys() -> an iterator over the keys of D """
- pass
- def itervalues(self): # real signature unknown; restored from __doc__
- """ value可迭代 """
- """ D.itervalues() -> an iterator over the values of D """
- pass
- def keys(self): # real signature unknown; restored from __doc__
- """ 所有的key列表 """
- """ D.keys() -> list of D's keys """
- return []
- def pop(self, k, d=None): # real signature unknown; restored from __doc__
- """ 获取并在字典中移除 """
- """
- D.pop(k[,d]) -> v, remove specified key and return the corresponding value.
- If key is not found, d is returned if given, otherwise KeyError is raised
- """
- pass
- def popitem(self): # real signature unknown; restored from __doc__
- """ 获取并在字典中移除 """
- """
- D.popitem() -> (k, v), remove and return some (key, value) pair as a
- 2-tuple; but raise KeyError if D is empty.
- """
- pass
- def setdefault(self, k, d=None): # real signature unknown; restored from __doc__
- """ 如果key不存在,则创建,如果存在,则返回已存在的值且不修改 """
- """ D.setdefault(k[,d]) -> D.get(k,d), also set D[k]=d if k not in D """
- pass
- def update(self, E=None, **F): # known special case of dict.update
- """ 更新
- {'name':'alex', 'age': 18000}
- [('name','sbsbsb'),]
- """
- """
- D.update([E, ]**F) -> None. Update D from dict/iterable E and F.
- If E present and has a .keys() method, does: for k in E: D[k] = E[k]
- If E present and lacks .keys() method, does: for (k, v) in E: D[k] = v
- In either case, this is followed by: for k in F: D[k] = F[k]
- """
- pass
- def values(self): # real signature unknown; restored from __doc__
- """ 所有的值 """
- """ D.values() -> list of D's values """
- return []
- def viewitems(self): # real signature unknown; restored from __doc__
- """ 所有项,只是将内容保存至view对象中 """
- """ D.viewitems() -> a set-like object providing a view on D's items """
- pass
- def viewkeys(self): # real signature unknown; restored from __doc__
- """ D.viewkeys() -> a set-like object providing a view on D's keys """
- pass
- def viewvalues(self): # real signature unknown; restored from __doc__
- """ D.viewvalues() -> an object providing a view on D's values """
- pass
- def __cmp__(self, y): # real signature unknown; restored from __doc__
- """ x.__cmp__(y) <==> cmp(x,y) """
- pass
- def __contains__(self, k): # real signature unknown; restored from __doc__
- """ D.__contains__(k) -> True if D has a key k, else False """
- return False
- def __delitem__(self, y): # real signature unknown; restored from __doc__
- """ x.__delitem__(y) <==> del x[y] """
- pass
- def __eq__(self, y): # real signature unknown; restored from __doc__
- """ x.__eq__(y) <==> x==y """
- pass
- def __getattribute__(self, name): # real signature unknown; restored from __doc__
- """ x.__getattribute__('name') <==> x.name """
- pass
- def __getitem__(self, y): # real signature unknown; restored from __doc__
- """ x.__getitem__(y) <==> x[y] """
- pass
- def __ge__(self, y): # real signature unknown; restored from __doc__
- """ x.__ge__(y) <==> x>=y """
- pass
- def __gt__(self, y): # real signature unknown; restored from __doc__
- """ x.__gt__(y) <==> x>y """
- pass
- def __init__(self, seq=None, **kwargs): # known special case of dict.__init__
- """
- dict() -> new empty dictionary
- dict(mapping) -> new dictionary initialized from a mapping object's
- (key, value) pairs
- dict(iterable) -> new dictionary initialized as if via:
- d = {}
- for k, v in iterable:
- d[k] = v
- dict(**kwargs) -> new dictionary initialized with the name=value pairs
- in the keyword argument list. For example: dict(one=1, two=2)
- # (copied from class doc)
- """
- pass
- def __iter__(self): # real signature unknown; restored from __doc__
- """ x.__iter__() <==> iter(x) """
- pass
- def __len__(self): # real signature unknown; restored from __doc__
- """ x.__len__() <==> len(x) """
- pass
- def __le__(self, y): # real signature unknown; restored from __doc__
- """ x.__le__(y) <==> x<=y """
- pass
- def __lt__(self, y): # real signature unknown; restored from __doc__
- """ x.__lt__(y) <==> x<y """
- pass
- @staticmethod # known case of __new__
- def __new__(S, *more): # real signature unknown; restored from __doc__
- """ T.__new__(S, ...) -> a new object with type S, a subtype of T """
- pass
- def __ne__(self, y): # real signature unknown; restored from __doc__
- """ x.__ne__(y) <==> x!=y """
- pass
- def __repr__(self): # real signature unknown; restored from __doc__
- """ x.__repr__() <==> repr(x) """
- pass
- def __setitem__(self, i, y): # real signature unknown; restored from __doc__
- """ x.__setitem__(i, y) <==> x[i]=y """
- pass
- def __sizeof__(self): # real signature unknown; restored from __doc__
- """ D.__sizeof__() -> size of D in memory, in bytes """
- pass
- __hash__ = None
- dict
dict
字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示:
- d = {key1 : value1, key2 : value2 }
键必须是唯一的,但值则不必。值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。
1:访问字典里的值
- dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
- print "dict['Name']: ", dict['Name'];
- print "dict['Age']: ", dict['Age'];
- ##########################################
- dict['Name']: Zara
- dict['Age']: 7
2:修改字典里的值
- dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
- dict['Age'] = 8; # update existing entry
- dict['School'] = "DPS School"; # Add new entry
- print "dict['Age']: ", dict['Age'];
- print "dict['School']: ", dict['School'];
- ##########################################
- dict['Age']: 8
- dict['School']: DPS School
3:删除操作
能删单一的元素也能清空字典,清空只需一项操作。显示删除一个字典用del命令,如下实例:
- dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
- del dict['Name']; # 删除键是'Name'的条目
- dict.clear(); # 清空词典所有条目
- del dict ; # 删除词典
- print "dict['Age']: ", dict['Age'];
- print "dict['School']: ", dict['School'];
- ##########################################
- dict['Age']:
- Traceback (most recent call last):
- File "test.py", line 8, in <module>
- print "dict['Age']: ", dict['Age'];
- TypeError: 'type' object is unsubscriptable
clear() 函数用于删除字典内所有元素:
- dict = {'Name': 'Zara', 'Age': 7};
- print "Start Len : %d" % len(dict)
- dict.clear()
- print "End Len : %d" % len(dict)
注:clear函数是删除字典里的所有元素,删除后,该字典仍然存在,不过是个空字典而已
4: copy() 函数返回一个字典的浅复制
- dict1 = {'Name': 'Zara', 'Age': 7};
- dict2 = dict1.copy()
- print "New Dictinary : %s" % str(dict2)
- ##########################################
- New Dictinary : {'Age': 7, 'Name': 'Zara'}
有关深浅复制的区别,请点击这里!
5:fromkeys() 函数用于创建一个新字典,以序列seq中元素做字典的键,value为字典所有键对应的初始值
- seq = ('name','age','sex')
- dic = dict.fromkeys(seq)
- print(dic)
- #########################################
- {'age': None, 'name': None, 'sex': None}
可以指定一个值,如:
- seq = ('name','age','sex')
- dic = dict.fromkeys(seq,10)
- print(dic)
- ##########################################
- {'age': 10, 'name': 10, 'sex': 10}
6:get() 函数返回指定键的值,如果值不在字典中返回默认值
- dic = {'Name': 'Zara', 'Age': 27}
- print(dic.get('Age'))
- print(dic.get('Sex','Never'))#Never为设置的默认值
- ##########################################
- 27
- Never
7:has_key() 函数用于判断键是否存在于字典中,如果键在字典dict里返回true,否则返回false
- dic = {'Name': 'Zara', 'Age': 27}
- print(dic.has_key('Name'))
- print(dic.has_key('Sex'))
- ##########################################
- True
- False
8:items() 函数以列表返回可遍历的(键, 值) 元组数组
- dic = {'Name': 'Zara', 'Age': 27}
- print(dic.items())
- ##########################################
- [('Age', 27), ('Name', 'Zara')]
9:keys() 函数以列表返回一个字典所有的键
- dic = {'Name': 'Zara', 'Age': 27}
- print(dic.keys())
- ##########################################
- ['Age', 'Name']
10:values() 函数以列表返回字典中的所有值
- dic = {'Name': 'Zara', 'Age': 27}
- print(dic.values())
- ##########################################
- [27, 'Zara']
11:update() 函数把字典dict2的键/值对更新到dict1里
- dict1 = {'Name': 'Zara', 'Age': 7}
- dict2 = {'Sex': 'female' }
- dict1.update(dict2)
- print(dict1)
- ##########################################
- {'Age': 7, 'Name': 'Zara', 'Sex': 'female'}
12:字典的遍历
方法一:
- dict1 = {'Age': 7, 'Name': 'Zara', 'Sex': 'female'}
- for k,v in dict1.items() :
- print(k,v)
- ##########################################
- ('Age', 7)
- ('Name', 'Zara')
- ('Sex', 'female')
方法二:
- dict1 = {'Age': 7, 'Name': 'Zara', 'Sex': 'female'}
- for (k,v) in dict1.items() :
- print(k,v)
- ##########################################
- ('Age', 7)
- ('Name', 'Zara')
- ('Sex', 'female')
学习资料见知识星球。
以上就是今天要分享的技巧,你学会了吗?若有什么问题,欢迎在下方留言。
快来试试吧,小琥 my21ke007。获取 1000个免费 Excel模板福利!
更多技巧, www.excelbook.cn
欢迎 加入 零售创新 知识星球,知识星球主要以数据分析、报告分享、数据工具讨论为主;
1、价值上万元的专业的PPT报告模板。
2、专业案例分析和解读笔记。
3、实用的Excel、Word、PPT技巧。
4、VIP讨论群,共享资源。
5、优惠的会员商品。
6、一次付费只需99元,即可下载本站文章涉及的文件和软件。
共有 0 条评论