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)

三、可变与不可变对象 

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


 

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

这是为什么呢?

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

注意:

可变类型:列表、字典

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

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python 中,集合是一种无序、不重复的数据结构Python 提供了两种内置的集合类型:set 和 frozenset。 set 是一个可变集合,它可以添加、删除和修改元素。set 的元素必须是可哈希的,因此只能包含不可变类型的元素,例如数字、字符串和元组等。set 的创建方式有两种: 1. 使用 {} 或 set() 函数创建,例如: ``` # 使用 {} 创建 set s = {1, 2, 3} # 使用 set() 函数创建 set s = set([1, 2, 3]) ``` 2. 使用推导式创建,例如: ``` # 使用列表推导式创建 set s = {x for x in range(1, 4)} ``` frozenset 是一个不可变集合,它不能添加、删除和修改元素。frozenset 的元素也必须是可哈希的。frozenset 的创建方式与 set 相同,只是使用 frozenset() 函数来创建。 以下是一些常用的集合操作: - 添加元素:使用 add() 方法可以向 set 中添加元素。 - 删除元素:使用 remove() 或 discard() 方法可以从 set 中删除元素。remove() 方法在删除不存在的元素时会抛出 KeyError 异常,而 discard() 方法则不会。 - 求交集、并集、差集:使用 &、|、- 运算符可以求 set 的交集、并集、差集。 - 判断是否为子集或超集:使用 <=、>= 运算符可以判断一个 set 是否为另一个 set 的子集或超集。 - 判断是否有交集:使用 isdisjoint() 方法可以判断两个 set 是否有交集。 例如: ``` s1 = {1, 2, 3} s2 = {2, 3, 4} # 求交集 print(s1 & s2) # 输出 {2, 3} # 求并集 print(s1 | s2) # 输出 {1, 2, 3, 4} # 求差集 print(s1 - s2) # 输出 {1} # 判断是否为子集 print(s1 <= s2) # 输出 False # 判断是否有交集 print(s1.isdisjoint(s2)) # 输出 False ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值