Python 核心数据结构(六)-range类型及可变与不可变对象

一、range() 函数返回的是一个可迭代对象(类型是对象),而不是列表类型, 所以打印的时候不会打 印列表。

print(range(10)) 输出结果: range(0, 10)

    如果想把range对象变成列表,可以使用list()函数对range进行处理 

print(list(range(5))) 输出结果: [0, 1, 2, 3, 4]

二、  range函数的基本语法 

range(stop) range(start, stop[, step]) 
start: 计数从 start 开始。默认是从 0 开始。
  例如range(5)等价于range(0, 5);
stop: 计数到 stop 结束,但不包括 stop。
   例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5 
step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)

Python 核心数据结构(六)-range类型及可变与不可变对象_第1张图片

Python 核心数据结构(六)-range类型及可变与不可变对象_第2张图片

三、可变与不可变对象 

     这里的可变与不可变是相对于内存里的那块地方是否可以改变,通俗点讲,就是内存中对应的地址在值 发生变动的时候会不会变。地址不变时,为可变对象,变动时,为不可变对象。

Python 核心数据结构(六)-range类型及可变与不可变对象_第3张图片

Python 核心数据结构(六)-range类型及可变与不可变对象_第4张图片
 

如果各位之前有自己编写并运行过,会发现这段代码运行时正确的,列表第一个元素的值确实被修改。

这是为什么呢?

我们回到list的存储方式,list的地址里存的都是实际内容的指针,此时元组的内容指向list地址,而无论 list的内容如何变更,list的地址也不会变,所以并不违背set里存储的元素不能变这样一个原则。

注意:

可变类型:列表、字典

不可变类型:数字、字符串、元组

 

你可能感兴趣的:(Python)