来源:python中国网 时间:2019-06-04

  一:回忆一(序列类型)

  python的字符串、列表、元组是不是都可以通过下标访问?因为他们都是序列!

  序列类型

  定义:有序排列的一组元素的集合,类型成员之间是有序排列的,并且可以通过下标偏移量访问他们的一个或几个成员。

  序列特点:序列的下标偏移量是从0开始到总元素数-1结束,之所以要减一是因为我们是从0开始数的。

  序列相关操作:

      1.切片操作(参考字符串切片)

      [:]提取整个字符串

      [start:]从start提取到结尾

      [:end]从头提取到end-1

      [start:end]从start提取到end-1

      [start:end:step]从start提取到end-1,每个step提取一个

      2.成员操作符in

      判断一个字符串是否包含在另一个字符串里面

      3.成员操作符not in

      判断一个字符串是否不在另一个字符串里面

      4.链接符

      +将两个字符串连接在一起

      5.字符串重复

      *重复字符串n次

运算符 Python表达式 结果 描述 支持的数据类型
+ [1, 2] + [3, 4] [1, 2, 3, 4] 合并 字符串、列表、元组
* 'Hi!' * 4 ['Hi!', 'Hi!', 'Hi!', 'Hi!'] 复制(重复) 字符串、列表、元组
in 3 in (1, 2, 3) True 元素是否存在 字符串、列表、元组、字典
not in 4 not in (1, 2, 3) True 元素是否不存在 字符串、列表、元组、字典
切片       字符串、列表、元组

  二:回忆二(可变和不可变

  前面或多或少说过字典可变的,数值是不可变的等等,可变和不可变到底说的什么呢?那些类型是可变的,哪些是不可变的呢?

  什么是可变和不可变

  我们知道定义变量就是在内存找了一片区域存储一个值,所谓的可变和不可变是说你在这片区域放了一个值,你能不能原地修改这个值。

  这是一个简单的解释,但足够理解了!(实际上ython内存管理机制,Python对int类型和较短的字符串进行了缓存,无论声明多少个值相同的变量,实际上都指向同个内存地址)

  1.可变类型,值可以改变:

  列表list

  字典dict

  2.不可变类型,值不可以改变:

  数值类型int、float、complex、frozenset[set的不可变版本]

  布尔bool

  字符串str

  元组tuple
 

# ‐*‐ coding: utf‐8 ‐*‐

# 可变对象
a = [1, 2, 3]
print('初始时a的值',a,'a的内存地址',id(a))
a[1] = 4
print('修改后a的值',a,'a的内存地址',id(a))

# 不可变对象
b = (1, 2, 3)
b[1] = 4
"""
报错:TypeError: 'tuple' object does not support item assignment

"""

结果:
D:installpython3python.exe D:/pyscript/test/1.py
Traceback (most recent call last):
  File "D:/pyscript/test/1.py", line 11, in 
    b[1] = 4
TypeError: 'tuple' object does not support item assignment
初始时a的值 [1, 2, 3] a的内存地址 3687848
修改后a的值 [1, 4, 3] a的内存地址 3687848

Process finished with exit code 1


  三:回忆三(容器类型,可迭代)

  列表集合字典等都可以通过for循环一个个输出出来(专业说法是可迭代),因为他们都是容器类型!

  tuple

  string

  list

  set

  frozenset

  dictionary

  以上我们都学过,都属于容器类型,python容器知识很复杂,涉及到数据结构等知识,感兴趣自行研究!