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'}
posted @ 2020-08-18 14:37  爱敲代码的二百斤  阅读(163)  评论(0编辑  收藏  举报