目录

Python基础语法(12)公共操作

Python基础语法(12)公共操作

公共操作指的是学过的所有数据序列都能支持的操作。

学习目标:

  • 运算符
  • 公共方法
  • 数据容器类型转换

运算符

运算符 描述 支持的数据容器类型
+ 合并 字符串、列表、元组
* 复制 字符串、列表、元组
in 元素是否存在 字符串、列表、元组、字典
not in 元素是否不存在 字符串、列表、元组、字典

测试:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
str1 = "abcdefg"
str2 = "hijklmn"

list1 = [1,2,3]
list2 = [4,5,6]

t1 = (1,2,3)
t2 = (4,5,6)

dict1 = {"name":"python"}
dict2 = {"age":30}

print(str1 + str2,list1+list2,t2+t1)  # abcdefghijklmn [1, 2, 3, 4, 5, 6] (4, 5, 6, 1, 2, 3)
print(dict1+dict2)  # 报错,字典不允许+运算符合并
print(str1*1,list1*2,t1*0)  # abcdefg [1, 2, 3, 1, 2, 3] () 取零以下的数字相乘会为为空
print(dict1*2)  # 报错,字典不允许*复制运算
print('a' in str1, 'b' not in str2, '3' not in list1, 4 in list2)  # True True True True
print("5" in t1, "python" in dict1, "age" in dict2, 30 in dict2.values())  # False False True True

公共的方法

函数 描述
len() 计算数据容器中的元素个数
del 或 del() 删除
max() 返回容器中的元素最大值
min() 返回容器中的元素最小值
range(start,end,step) 生成从start到end的数字,步长为step,供for循环使用(不包含end)
enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用于for循环

测试:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
str = "abcdefghijklmn"
list1 = [1,2,3,4,5]
t1 = (1,2,3,4,5)
s1 = {1,2,3,4,5}
dict1 = {"name":"python", "age":30}

print(len(str), len(list1), len(dict1), len(t1))  # 14 5 2 5
# del(list1[1], t1, dict1["name"], s1)  # 元组和集合中的单个元素无法删除,前者不支持后者是无序的无法定位
print(list1, dict1)  # [1, 3, 4, 5] {'age': 30}
print(max(str), max(list1), max(t1), min(s1), min(dict1)) # n 5 5 1 age 在字符串中按ascii码排序,在字典中比较value的值
for i in range(1,10,1):
    print(i, end="")  # 123456789
print()
for j in range(1,10,2):
    print(j,end="")  # 13579

enumerate()函数

  1. 语法

    1
    
    enumerate(可遍历对象, start=0)
    

    ⚠️注意:start参数用来设置遍历数据的起始下标的初始值,默认为0

  2. 实验

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    
    list1 = ['a', 'b', 'c', 'd', 'e', 'f']
    print(enumerate(list1))
    print(type(enumerate(list1)))
    for i in enumerate(list1):
      print(i,end="")
    print()
    for j in enumerate(list1, start = 2):
      print(j,end="")
    """
    <enumerate object at 0x7f9bf8116440>
    <class 'enumerate'>
    (0, 'a')(1, 'b')(2, 'c')(3, 'd')(4, 'e')(5, 'f')
    (2, 'a')(3, 'b')(4, 'c')(5, 'd')(6, 'e')(7, 'f')
    """
    # enumerate()返回的单个数据结果是元组,元组第一个数据是原迭代数据的下标,第二个数据是原迭代数据的值
    

数据容器类型转换

将数据序列转换元组

tuple()函数可以将某个数据序列转化为元组。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
str = "abcdefghijklmn"
list1 = [1,2,3,4,5]
t1 = (1,2,3,4,5)
s1 = {1,2,3,4,5}
dict1 = {"name":"python", "age":30}
# 转换字符串时进行拆分,转换字典时保留keys
print(tuple(list1),tuple(str),tuple(s1),'\n',tuple(t1),tuple(dict1))
"""
(1, 2, 3, 4, 5) ('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n') (1, 2, 3, 4, 5) 
 (1, 2, 3, 4, 5) ('name', 'age')
"""

将数据序列转换为列表

list()函数可以将某个数据序列转化为元组。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
str = "abcdefghijklmn"
list1 = [1,2,3,4,5]
t1 = (1,2,3,4,5)
s1 = {1,2,3,4,5}
dict1 = {"name":"python", "age":30}
# 转换字符串时进行拆分,转换字典时保留keys
print(list(str),list(list1),list(t1),"\n",list(s1),list(dict1))
"""
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n'] [1, 2, 3, 4, 5] [1, 2, 3, 4, 5] 
 [1, 2, 3, 4, 5] ['name', 'age']
"""

将数据序列转换为集合

set()函数可以将某个数据序列转化为集合。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
str = "abcdefghijklmn"
list1 = [1,1,1,4,5]
t1 = (1,1,1,4,5)
s1 = {1,2,3,4,5}
dict1 = {"name":"python", "age":30}

# 集合有去重功能,转换字符串时进行拆分,转换字典时保留keys
print(set(str), set(list1), set(t1), "\n", set(s1), set(dict1))
"""
{'d', 'k', 'm', 'f', 'g', 'l', 'c', 'h', 'n', 'a', 'i', 'e', 'b', 'j'} {1, 4, 5} {1, 4, 5} 
 {1, 2, 3, 4, 5} {'age', 'name'}
"""

总结

针对Python中五种常用的数据序列我们可以有三种公共的操作:

  • 公共运算符
  • 公共的方法
  • 数据序列的相互转化
    • 在运算符中加号和乘号是不支持字典的,乘一个小于等于0的整数会使其序列为空;
    • del删除操作不支持元组和集合对于单个元素的删除操作;
    • enumerate()函数返回的单个数据结构是(下标,值)组成的元组;
    • 在进行三个数据序列容器的转化时要考虑目标序列的特性,比如集合去重且不支持下标的特性。