python学习记录day-8-元组 and 集合

目录

可变序列与不可变对象

元组

元组的创建

元组特点

遍历元组

集合

集合相关操作

集合间的关系

集合的数学操作

集合生成式

 

可变序列与不可变对象

# 可变序列
lst=[10,20,45]
print(id(lst))
lst.append(300)
print(id(lst))
# 不可变对象,字符串,元组(修改后,内存地址发生更改)
s='hello'
s=s+'world'
print(id(s))
print(s)

元组

元组的创建

# 元组的创建
# 方法一,使用()
t=('Python','world',98)
print(t)
print(type(t))
# 方法二,使用内置函数tuple()
t1=tuple(('Python','world',98))
t2='Python','world',98
t3=('Python',) # string类型,只有一个元素必须加逗号
print(t1)
print(type(t1))
print(t2)
print(type(t2))
print(t3)
print(type(t3))
# 空元组的创建方式
t4=()
t5=tuple()
# 空列表的创建方式
lst=[]
lst1=list()
# 空字典的创建方式
d={}
d2=dict()
print('空元组',t4,t5)
print('空列表',lst,lst1)
print('空字典',d,d2)

元组特点

# 元组:不可变序列
# 如果元组中对象本身是不可变对象,则不能再引用其他对象
# 如果元组中的对象是可变对象,则可变对象的引用不允许改变,但数据可以改变
t=(10,[20,30],9)
print(t)
print(type(t))
print(t[0],type(t[0]),id(t[0]))
print(t[1],type(t[1]),id(t[1]))
print(t[2],type(t[2]),id(t[2]))
# 尝试t[1]修改为100
print(id(100))
# t[1]=100 # 元组是不允许修改元素的,不能实现
# 由于[20,30]组成列表,而列表是可变对象,所以可以向列表中添加元素,而列表的内存地址不变
t[1].append(100) # 向列表中添加元素
print(t,id(t[1]))
# 不可以修改元组中引用,但可以修改元组中引用列表里的元素

遍历元组

# 使用for-in对元组进行遍历
t=('Python','world',98)
# 第一种获取元组元素的方式,使用索引
print(t[0])
print(t[1])
# print(t[3]) # 索引超出范围
# 第二种方法,遍历元组
for item in t:
print(item)

集合

# 集合:没有value的字典
# 集合有两种创建方式
#方法一:使用{}
s={2,3,4,5,6,7,7} # 集合当中元素不允许重复,去掉重复的。字典中key不能重复
print(s)
# 方法二:使用内置函数set()
s1=set(range(6))
print(s1,type(s1))
s2=set([1,2,3,4,5,5,6,7,8,9,9]) # 输出去掉了重复内容
print(s2,type(s2))
s3=set((1,2,3,4,56,6,6)) # 并未按顺序输出,证明了集合中元素使无序的
print(s3,type(s3))
s4=set('Python')
print(s4,type(s4))
s5=({12,4,34,55,66,44,4})
print(s5,type(s5))

# 定义一个空集合
s6=set()
print(s6,type(s6))

集合相关操作

# 集合相关操作
# 判断元素是否存在
s={12,23,23,45,65,78}
print(12 in s)
print(23 not in s)
# 集合元素新增,无序添加
# 方法一add()一次添加一个
s.add(80)
print(s)
# 方法二update()一次添加多个
s.update({200,400,300})
print(s)
s.update((234,450,370))
print(s)
# 集合元素删除
# 方法一
s.remove(65)
print(s)
# s.remove(100) # 异常
print(s)
# 方法二
s.discard(1000) # 即使删除元素不存在,也不会抛出异常
# 方法三pop()一次随机删除一个元素
s.pop() # 不能添加参数
print(s)
# 方法四
s.clear() # 清空
print(s)

集合间的关系

# 集合间的关系
s1={10,20,30,40}
s2={30,40,50,60}
print(s1==s2)
print(s1!=s2)
# 子集,一个集合是否是另一个集合的子集
s3={10,20,30,40,90}
s4={10,20}
s5={12,34}
print(s4.issubset(s3))
print(s5.issubset(s4))
# 超集,子集的相反
print(s3.issuperset(s4))
print(s3.issuperset(s5))
# 是否有交集
print(s3.isdisjoint(s4)) # 这个函数是相反的意思,问是不是没有交集
print(s4.isdisjoint(s5))

集合的数学操作

# 集合的数学操作,操作后集合不发生变化
# (1)交集
s1={10,20,30,40,50}
s2={20,30,40,50,80}
print(s1.intersection(s2)) # 求交集
print(s1 & s2) # 用符号直接求
print(s1)
print(s2)
# (2)并集
print(s1.union(s2))
print(s1 | s2) # 等价
print(s1)
print(s2)

# (3)差集操作
print(s1.difference(s2))
print(s2.difference(s1))
print(s2 - s1) # 等价

# (4)对称差集(互相差集的结果)
print(s1.symmetric_difference(s2))
print(s1 ^ s2)
print(s2 ^ s1) # 结果相等

集合生成式

# 集合生成式,将列表生成式当中的[]换成{}
# 列表生成式
lst=[i*i for i in range(10)] # 列表有序
print(lst)
# 集合生成式
s={i*i for i in range(10)} # 集合无序
print(s)

学习链接

B站Python_木子

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: 可以这样表示: ```python numbers = tuple(range(1, 51)) print(numbers) ``` 输出结果: ``` (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50) ``` ### 回答2: 使用元组可以将1-50表达出来,代码如下: numbers = tuple(range(1, 51)) print(numbers) 运行以上代码,将会输出一个包含1到50的元组。 解释一下代码的含义:range(1, 51)表示生成一个从1到50的整数序列,然后使用tuple()函数将该序列转换为元组,并将结果赋值给变量numbers。最后,通过使用print()函数来输出numbers,即可看到生成的元组。 ### 回答3: Python可以使用元组来表示1到50的数字序列,以下是一种可能的实现方法: ``` numbers = tuple(range(1, 51)) ``` 在这个代码中,使用了`range()`函数来生成从1到50的整数序列,然后使用`tuple()`函数将该整数序列转换为元组。`range()`函数使用两个参数指定起始值和结束值,生成的序列会包括起始值但不包括结束值。因此这里使用参数1和51,确保生成的序列包含了1到50的所有整数。 将整数序列转换为元组的目的是为了保持数字的顺序不可变。元组是一种不可变的数据结构,一旦创建就无法对其中的元素进行修改。这在某些场景下是非常有用的,例如在需要保证数据的完整性和安全性时。 通过以上代码,我们可以创建一个名为`numbers`的元组,其中包含了1到50的所有整数。如果需要访问元组中的某个元素,可以通过索引的方式进行,例如`numbers[0]`表示访问第一个元素1,`numbers[49]`表示访问最后一个元素50。 需要注意的是,元组中的元素是按照顺序排列的,并且元组中可以包含重复的元素。在上述代码中,由于使用了`range()`函数生成序列,因此序列中不包含重复的数字。 这只是一种简单的方式来使用元组表达1到50的数字序列,Python还有其他多种方法来完成相同的操作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哈哈哈哈去3

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值