Python基础 - 基本数据类型常见操作(包含字符串常见操作、列表常见操作、元组常见操作、字典常见操作)
1、数字
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位表示指数,剩下的一位表示符号。 complex(复数) 复数由实数部分和虚数部分组成,一般形式为x+yj,其中的x是复数的实数部分,y是复数的虚数部分,这里的x和y都是实数。 注:Python中存在小数字池:-5 ~ 257
2、布尔值
真或假 1 或 0 True 或 False
3、字符串
基本操作:
# 1.字符串长度
a='hello world'
print len(a) # 11
# 2、字符串中字母大小写转换
a = 'HELLO WORLD'
print a.lower() # 转换为小写 hello world
a = 'hello world'
print a.upper() # 转换为大写 HELLO WORLD
a='hello world'
print a.capitalize() # 首字母大写 Hello world
a = 'Hello World'
print a.swapcase() # 大小写互换 hELLO wORLD
# 3.将字符串放入中心位置可指定长度以及位置两边字符
a = 'hello world'
print a.center(20,'-') # ----hello world-----
print len('----hello world-----') # 20
# 4.删除空白
# str.strip():删除字符串两边的空格
a = ' hello '
b = a.strip()
print b
# str.lstrip():删除字符串左边空格
a = ' hello'
b = a.lstrip()
print b
# str.rstrip():删除字符串右边的空格
a = 'hello '
b = a.rstrip()
print b
# 5.分割:前中后三部分
a = 'hello world'
print a.partition(' ') # ('hello', ' ', 'world')
print a.partition('o') # ('hell', 'o', ' world')
# 6.复制字符串
a = 'hello'
b = a
print a,b # hello hello
# 7.字符串拼接
# A. +:拼接2个字符串
a = 'hello '
b = 'world'
print a + b # hello world
注:此方法又称为 "万恶的加号",因为使用加号连接2个字符串会调用静态函数string_concat(register PyStringObject *a ,register PyObject * b),
在这个函数中会开辟一块大小是a+b的内存的和的存储单元,然后将a,b字符串拷贝进去。如果是n个字符串相连,那么会开辟n-1次内存,是非常耗费资源的。
# B. str.join:连接2个字符串,可指定连接符号
a = ["hello", "world"]
b = "******".join(a)
print b # hello******world
a = ("hello", "world")
b = "######".join(a)
print b # hello######world
# 8.查找字符串(检测字符串中是否包含子字符串str,可指定范围)
# str.index 和str.find 功能相同,区别在于find()查找失败会返回-1,不会影响程序运行。一般用find!=-1或者find>-1来作为判断条件。
a = 'hello world'
print a.index('w') # 6
print a.index('x') # ValueError: substring not found
a = 'hello world'
print a.find('w') # 6
print a.find('x') # -1
# 9.是否包含指定字符串(in |not in)
a = 'hello world'
if 'hello' in a:
print 'in'
if 'qwe' not in a:
print 'not in'
# 10. 字符串统计
a = 'hello world'
print a.count('l') # 3
# 11.字符串的测试、判断函数 结果是布尔型
# startswith() 以...开头
print 'Hello World'.startswith('H') # True
print 'hello world'.startswith('A') # False
# endswith() 以...结尾
print 'Hello World'.endswith('d') # True
print 'hello world'.endswith('D') # False
# islower() 字符串中的字母是否全是小写
print 'Hello World'.islower() # False
print 'hello world'.islower() # True
# isupper() 字符串中字母是否全是大写
print 'Hello World'.isupper() # False
print 'hello world'.isupper() # False
# istitle()是否是首字母大写的(会对每个进行判断)
print 'Hello World'.istitle() # True
print 'Hello world'.istitle() # False
# 12.字符串切片(顾头不顾尾)
使用一对方括号、起始偏移量start、终止偏移量end 以及可选的步长step 来定义一个分片。
格式: [start:end:step]
[:] 提取从开头(默认位置0)到结尾(默认位置-1)的整个字符串
[start:] 从start 提取到结尾
[:end] 从开头提取到end - 1
a = '0123456789'
print a[0:3] #截取第一位到第三位的字符(0可省,等价于 print a[:3])
print a[:] #截取字符串的全部字符
print a[6:] #截取第七个字符到结尾
print a[:-3] #截取从头开始到倒数第三个字符之前
print a[2] #截取第三个字符
print a[-1] #截取倒数第一个字符
print a[::-1] #字符串倒序
print a[-3:-1] #截取倒数第三位与倒数第一位之前的字符
print a[-3:] #截取倒数第三位到结尾
print a[:-5:-3] #逆序截取,截取倒数第五位数与倒数第三位数之间
# 13.切割
a = 'hello world'
print a.split(' ') # ['hello', 'world']
print a.split('o') # ['hell', ' w', 'rld']
# 14.替换
a = 'hello world'
print a.replace(' ', 'my') # hellomyworld
print a.replace('hello', 'my') # my
# 15.根据换行执行分割
a = 'hello\nworld'
print a.splitlines() # ['hello', 'world']
# 16.索引:str[下标]
a = 'hello world'
print a[0] # 从0开始
列表和元组的主要不同在于:列表是可以修改的,而元组不可以。
Python支持一种数据结构的基本概念,名为容器(container)。容器基本上就是可包含其他对象的对象。两种主要的容器是序列(如列表和元组)和映射(如字典)。在序列中,每个元素都有编号,而在映射中,每个元素都有名称(也叫键)。
4、列表
基本操作:
# 1.索引(第一个索引是0,第二个是1,以此类推),可以使用索引来获取元素,这种索引方式适用于所有序列。
当你使用负数索引时,Python将从右(即最后一个元素)开始往左数,因此-1是最后一个元素的位置。
可以直接对其执行索引操作,无需先将其赋给变量。
my_list = ['a', 'b', 'c', 'd', 'e']
print my_list[0] # a
print my_list[3] # d
# 2.切片
my_list = ['a', 'b', 'c', 'd', 'e']
print my_list[1:] # 除了第一个元素之外的其他元素 ['b', 'c', 'd', 'e']
print my_list[:-1] # 除了最后一个元素之外的其他元素 ['a', 'b', 'c', 'd']
# 列表的翻转
# 方式一:
print my_list[::-1] # ['e', 'd', 'c', 'b', 'a']
# 方式二:
my_list.reverse()
print my_list # ['e', 'd', 'c', 'b', 'a']
# 3.重复
my_list = ['a', 'b', 'c', 'd', 'e']
print my_list * 2 # ['a', 'b', 'c', 'd', 'e', 'a', 'b', 'c', 'd', 'e']
# 4.连接
my_list1 = ['a', 'b', 'c', 'd', 'e']
my_list2 = ['a', 'b', 'c', 'd', 'e']
print my_list1 + my_list2 # ['a', 'b', 'c', 'd', 'e', 'a', 'b', 'c', 'd', 'e']
# 5.是否包含(in |not in)
my_list = ['a', 'b', 'c', 'd', 'e']
print 'a' in my_list # True
print 'a' not in my_list # False
# 6.遍历
my_list = ['a', 'b', 'c', 'd', 'e']
for i in my_list:
print i
# a
# b
# c
# d
# e
# 7.列表的增删改查操作
# 增加
my_list = ['a', 'b', 'c', 'd', 'e']
my_list.append('f') # append:追加 追加一个元素到列表中(末尾位置添加)
print my_list # ['a', 'b', 'c', 'd', 'e', 'f']
my_list = ['a', 'b', 'c', 'd', 'e']
my_list.extend(['f', 'g']) # extend:拉伸 追加多个元素到列表中(末尾位置添加)
print my_list # ['a', 'b', 'c', 'd', 'e', 'f', 'g']
my_list = ['a', 'b', 'c', 'd', 'e']
my_list.insert(1, 'bb') # insert:在指定索引位置插入元素
print my_list # ['a', 'bb', 'b', 'c', 'd', 'e']
# 删除(可以用del语句、pop()方法、remove()方法进行删除。)
my_list = ['a', 'b', 'c', 'd', 'e']
del my_list[1] # del可以删除任意已知位置的列表元素,从内存中删除列表.
print my_list # ['a', 'c', 'd', 'e']
# pop()可以传递索引值,也可在括号里指定索引,来删除指定位置的列表元素,如果不指定索引,默认删除最后一个元素。
my_list = ['a', 'b', 'c', 'd', 'e']
print my_list.pop() # e
print my_list # ['a', 'b', 'c', 'd']
my_list = ['a', 'b', 'c', 'd', 'e']
print my_list.pop(1) # b
print my_list # ['a', 'c', 'd', 'e']
my_list = ['a', 'b', 'c', 'd', 'e']
my_list.remove('a') # remove()不需要知道元素位置,根据元素的值即可删除元素。
print my_list # ['b', 'c', 'd', 'e']
# 修改
my_list = ['a', 'b', 'c', 'd', 'e']
my_list[0] = 'aaa' # 通过索引,重新赋值
print my_list # ['aaa', 'b', 'c', 'd', 'e']
my_list = ['a', 'b', 'c', 'd', 'e']
print my_list[:2] # ['a', 'b']
my_list[:2] = ['aaa','bbb'] # 通过切片
print my_list # ['aaa', 'bbb', 'c', 'd', 'e']
# 查看
my_list = ['a', 'b', 'c', 'd', 'e']
print my_list.count('a') # 1 查看列表中元素出现的次数
print my_list.index('a') # 0 查看指定元素的索引值
print my_list[0] # a 查看指定索引的元素值
# 8.长度
my_list = ['a', 'b', 'c', 'd', 'e']
print len(my_list) # 5
# 9.排序
my_list = ['d', 'c', 'b', 'a', 'e']
my_list.reverse() # reverse列表反转排序:是把原列表中的元素顺序从左至右的重新存放,而不会对列表中的参数进行排序整理。
print my_list # ['e', 'a', 'b', 'c', 'd']
# sort排序方法是直接修改原列表list排序方法。
my_list = ['d', 'c', 'b', 'a', 'e']
my_list.sort() # 正序排序
print my_list # ['a', 'b', 'c', 'd', 'e']
my_list = ['d', 'c', 'b', 'a', 'e']
my_list.sort(reverse=True) # 倒序排序
print my_list # ['e', 'd', 'c', 'b', 'a']
# sorted()方法即可以保留原列表,又能得到已经排序好的列表。
my_list = ['d', 'c', 'b', 'a', 'e']
print sorted(my_list) # ['a', 'b', 'c', 'd', 'e']
print my_list # ['d', 'c', 'b', 'a', 'e']
5、元组
基本操作:
# 1.特性
# 元组如果只有一个元素的时候,后面一定要加逗号,否则数据类型不确定
my_tuple1 = ('a')
my_tuple2 = ('a',)
print type(my_tuple1), type(my_tuple2)
# <type 'str'> <type 'tuple'>
# 2.拼接元组
my_tuple1 = ('a', 'b', 'c', 'd', 'e')
my_tuple2 = ('a', 'b', 'c', 'd', 'e')
print my_tuple1 + my_tuple1 # ('a', 'b', 'c', 'd', 'e', 'a', 'b', 'c', 'd', 'e')
# 3.重复
my_tuple = ('a', 'b', 'c', 'd', 'e')
print my_tuple * 2 # ('a', 'b', 'c', 'd', 'e', 'a', 'b', 'c', 'd', 'e')
# 4.len 求元组的元素个数
my_tuple = ('a', 'b', 'c', 'd', 'e')
print(len(my_tuple)) # 5
# 5.in| not 判断是否包含元素
# 6.元组的增删改查操作(元组本身不能增删改查,但是如果元组里面包含可变数据类型,可以间接修改元组的内容)
my_tuple = ('a', ['b', 'c'], 'd', 'e')
# my_tuple[0] = 'aa' 如此执行会报错
my_tuple[1][0] = 'bb'
print my_tuple # ('a', ['bb', 'c'], 'd', 'e')
my_tuple = ('a', ['b', 'c'], 'd', 'e')
my_tuple[1].append('cc')
print my_tuple # ('a', ['b', 'c', 'cc'], 'd', 'e')
my_tuple = ('a', ['b', 'c'], 'd', 'e')
my_tuple[1].remove('c')
print my_tuple # ('a', ['b'], 'd', 'e')
# 7.计算,max,min,sum
my_tuple = ('a', 'b', 'c', 'd', 'e')
print(max(my_tuple)) # e
print(min(my_tuple)) # a
# sum 注意如果元组里面不是全是数值是无法求和的
# 8.排序和反转,不支持:sort(),reverse(),支持:sorted()
my_tuple = ('d', 'c', 'b', 'a', 'e')
print sorted(my_tuple) # ['a', 'b', 'c', 'd', 'e']
print my_tuple # ('d', 'c', 'b', 'a', 'e')
# 注:不改变元组中元素的位置,只是临时排序,是可以的
# 9.查找,index
my_tuple = ('a', 'b', 'c', 'd', 'e')
print(my_tuple.index('a')) # 0
# 10.统计出现的次数 count
my_tuple = ('a', 'b', 'c', 'd', 'e')
print(my_tuple.count('a')) # 1
6、字典(无序)
基本操作:
注:
# 字典中的 key 不允许重复
# 在使用 {} 创建字典时,{} 应包含多个 key-value 对,key 与 value 之间用英文冒号隔开;多个 key-value 对之间用英文逗号隔开。
字典的基本用法
# 应牢记字典包含多个 key-value 对,而 key 是字典的关键数据,因此程序对字典的操作都是基于 key 的。基本操作如下:
# 1.通过 key 访问 value 。
my_dict = {'a': 1, 'b': 2, 'c': 3}
print my_dict['a'] # 1
# 注 没有添加,有修改
# 2.通过 key 添加 key-value 对。
my_dict = {'a': 1, 'b': 2, 'c': 3}
my_dict['d'] = 4
print my_dict # {'a': 1, 'c': 3, 'b': 2, 'd': 4}
# 3.通过 key 修改 key-value 对。
my_dict = {'a': 1, 'b': 2, 'c': 3}
my_dict['a'] = 11
print my_dict # {'a': 11, 'c': 3, 'b': 2}
# 4.通过 key 删除 key-value 对。
my_dict = {'a': 1, 'b': 2, 'c': 3}
del my_dict['a']
print my_dict # {'c': 3, 'b': 2}
# 5.通过 key 判断指定 key-value 对是否存在(in | not in)。
my_dict = {'a': 1, 'b': 2, 'c': 3}
print 'd' in my_dict # False
print 'd' not in my_dict # True
字典的常用方法
# 1.字典由 dict 类代表,因此我们可使用 dir(dict) 来查看该类包含哪些方法。
# 2.clear()方法: clear() 用于清空字典中所有的 key-value 对,对一个字典执行 clear() 方法之后,该字典就会变成一个空字典。
my_dict = {'a': 1, 'b': 2, 'c': 3}
# # 清空 my_dict 所有 key-value 对
my_dict.clear()
print my_dict # {}
# 3.get()方法: get() 方法其实就是根据 key 来获取 value,它相当于方括号语法的增强版,当使用方括号语法访问并不存在的 key 时,字典会引发 KeyError 错误;
# 但如果使用 get() 方法访问不存在的 key,该方法会简单地返回 None,不会导致错误。
my_dict = {'a': 1, 'b': 2, 'c': 3}
# # 获取'a'对应的 value
print my_dict.get('a') # 1
print my_dict.get('d') # None
# print my_dict['d'] # KeyError
# 4.update()方法: update() 方法可使用一个字典所包含的 key-value对 来更新己有的字典。
# 在执行 update() 方法时,如果被更新的字典中己包含对应的 key-value 对,那么原 value 会被覆盖;如果被更新的字典中不包含对应的 key-value 对,则该 key-value 对被添加进去。
my_dict1 = {'a': 1, 'b': 2, 'c': 3}
my_dict2 = {'d': 4, 'e': 5, 'f': 6}
my_dict1.update(my_dict2)
print my_dict1 # {'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'f': 6}
my_dict1 = {'a': 1, 'b': 2, 'c': 3}
my_dict2 = {'a': 4, 'b': 5, 'f': 6}
my_dict1.update(my_dict2)
print my_dict1 # {'a': 4, 'c': 3, 'b': 5, 'f': 6}
# 从上面的执行过程可以看出,由于被更新的 dict 中己包含 key 为'a'与'b'的 key-value 对,因此更新时该 key-value 对的 value 将被改写;
# 但如果被更新的 dict 中不包含 key 为'f'的 key-value 对,那么更新时就会为原字典增加一个 key-value 对。
# 5.items()、keys()、values() : 分别用于获取字典中的所有 key-value 对、所有 key、所有 value。如下代码示范了这三个方法的用法:
my_dict = {'a': 1, 'b': 2, 'c': 3}
# 获取字典所有的key-value对
ims = my_dict.items()
print ims # [('a', 1), ('c', 3), ('b', 2)]
print type(ims) # <type 'list'>
# 获取字典所有的key
my_dict = {'a': 1, 'b': 2, 'c': 3}
kys = my_dict.keys()
print kys # ['a', 'c', 'b']
print type(kys) # <type 'list'>
# 获取字典所有的value
my_dict = {'a': 1, 'b': 2, 'c': 3}
val = my_dict.values()
print val # [1, 3, 2]
print type(val) # <type 'list'>
# 在 Python 2.x 中,items()、keys()、values() 方法的返回值本来就是列表,完全可以不用 list() 函数进行处理。当然,使用 list() 函数处理也行,列表被处理之后依然是列表。
# 6.pop方法: pop() 方法用于获取指定 key 对应的 value,并删除这个 key-value 对。如下方法示范了 pop() 方法的用法:
my_dict = {'a': 1, 'b': 2, 'c': 3}
print my_dict.pop('a') # 1 会获取 'a' 对应的 value,并删除该 key-value 对。
print my_dict # {'c': 3, 'b': 2}
# 7.popitem()方法: popitem() 方法用于随机弹出字典中的一个 key-value 对。
# 此处的随机其实是假的,正如列表的 pop() 方法总是弹出列表中最后一个元素,实际上字典的 popitem() 其实也是弹出字典中最后一个 key-value 对。
# 由于字典存储 key-value 对的顺序是不可知的,因此开发者感觉字典的 popitem() 方法是“随机”弹出的,但实际上字典的 popitem() 方法总是弹出底层存储的最后一个 key-value 对。
my_dict = {'a': 1, 'b': 2, 'c': 3}
print my_dict.popitem() # ('a', 1)
print my_dict # {'c': 3, 'b': 2}
# 8.setdefault()方法也用于根据 key 来获取对应 value 的值。但该方法有一个额外的功能,即当程序要获取的 key 在字典中不存在时,该方法会先为这个不存在的 key 设置一个默认的 value,然后再返回该 key 对应的 value。
# 总之,setdefault() 方法总能返回指定 key 对应的 value;如果该 key-value 对存在,则直接返回该 key 对应的 value;如果该 key-value 对不存在,则先为该 key 设置默认的 value,然后再返回该 key 对应的 value。
my_dict = {'a': 1, 'b': 2, 'c': 3}
# 设置默认值,该key在dict中不存在,新增key-value对
print my_dict.setdefault('d', 4) # 4
print my_dict # {'a': 1, 'c': 3, 'b': 2, 'd': 4}
# # 设置默认值,该key在dict中存在,不会修改dict内容
my_dict = {'a': 1, 'b': 2, 'c': 3}
print my_dict.setdefault('c', 4) # 3
print my_dict # {'a': 1, 'c': 3, 'b': 2}
# 9.fromkeys()方法使用给定的多个 key 创建字典,这些 key 对应的 value 默认都是 None;也可以额外传入一个参数作为默认的 value。该方法一般不会使用字典对象调用(没什么意义),通常会使用 dict 类直接调用。
# 使用列表创建包含2个key的字典
a_dict = dict.fromkeys(['a', 'b'])
print(a_dict) # {'a': None, 'b': None}
# 使用元组创建包含2个key的字典
b_dict = dict.fromkeys((13, 17))
print(b_dict) # {13: None, 17: None}
# 使用元组创建包含2个key的字典,指定默认的value
c_dict = dict.fromkeys((13, 17), 'good')
print(c_dict) # {13: 'good', 17: 'good'}

浙公网安备 33010602011771号