python基础-元组、集合

元组

1. 定义:

有序的集合对象,不可变的序列

  • ()中包含任意对象的有序集合、通过偏移读取、不可变长度、异构、支持嵌套
  • 例如:() 、(1,)、(1, ‘2’, 3)、 (1,[2,3],'4')

2. 索引:

取出元组指定偏移量的单个对象

  • 与列表、字符串索引类似
  • 不能对元组内的对象直接赋值(不可变性)
t = ('jzy', 23, True, '中国')
print(t[0])

# 重新给元组赋值
# t[0] = 'wd'  # 输出:TypeError

输出:

jzy

3. 分片:

  • 与列表、字符串索引类似
print(t[:2])

输出:

('jzy', 23)

4. 内置运算符

  • 列表使用方法相同
    • +(合并,生成新元组)、
    • *(重复,生成新元组)、
    • len(获取长度)、
    • tuple(元组转换)、
    • in测试
# 列表与元组相互转换
    fruits_list = ['apple', 'banana', 'orange']
    fruits_tuple = tuple(fruits_list)
    print(fruits_tuple)

输出:

('apple', 'banana', 'orange')

集合

Python中的集合跟数学上的集合是一致的,不允许有重复元素,而且可以进行交集、并集、差集等运算。

  • set() 转换为集合
  • 集合可以将列表去重
  • 增加集合元素方法
      1. set.add() # 单个元素
      1. set.update(list) # 必须是可迭代的对象
  • 删除集合
    • set.discard()
    • set.remove()
  • 交集、并集、差集等运算
    • (set1 & set2) # 交集
    • (set1 | set2) # 并集
    • (set1 - set2) # 差集
    • (set1 ^ set2) # 对称差集
# 集合可以去重
>>> set1 = {1, 2, 3, 3, 3, 2}
>>> print(set1) 
{1, 2, 3}

# 获取集合长度
>>> print('Length =', len(set1))
Length = 3

# 创建数字1-9的集合
>>> set2 = set(range(1, 10))
>>> print(set2)
{1, 2, 3, 4, 5, 6, 7, 8, 9}

# 增加集合元素方法
>>>  set1.add(4)
>>> set1.add(5)
>>> set2.update([11, 12])
>>> print(set1)
{1, 2, 3, 4, 5}
>>> print(set2)
{1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12}

# 移除集合元素
>>> set2.discard(5)
>>> set2.remove(4)
>>> print(set2) # 如果不存在会引发KeyError
{1, 2, 3, 6, 7, 8, 9, 11}

 # 将元组转换成集合
>>> set3 = set((1, 2, 3, 3, 2, 1))
>>> print(set3.pop())
1
>>> print(set3)
{2, 3}

# 集合的交集、并集、差集、对称差运算
set1={1, 2, 3, 4, 5}
set2={1, 2, 3, 6, 7, 8, 9, 11, 12}

>>> print(set1 & set2) # 交集
    # print(set1.intersection(set2))
{1, 2, 3}
>>> print(set1 | set2) # 并集
    # print(set1.union(set2))
{1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12}
>>> print(set1 - set2) # 差集
    # print(set1.difference(set2))
{4, 5}
>>> print(set1 ^ set2) # 对称差集
    # print(set1.symmetric_difference(set2))
{4, 5, 6, 7, 8, 9, 11, 12}
    # 判断子集和超集
    
>>> print(set2 <= set1)
    # print(set2.issubset(set1))
False
>>> print(set3 <= set1)
    # print(set3.issubset(set1))
True
>>> print(set1 >= set2)
    # print(set1.issuperset(set2))
False
>>> print(set1 >= set3)
    # print(set1.issuperset(set3))
True

元组总结:

  1. Python 的元组与列表类似,它和列表一样可以保存多条数据,不同之处在于元组的元素不能修改

  2. 这里有一个非常值得探讨的问题,我们已经有了列表这种数据结构,为什么还需要元组这样的类型呢?

  • 2.1 元组中的元素是无法修改的,事实上我们在项目中尤其是多线程环境中可能更喜欢使用的是那些不变对象
    (一方面因为对象状态不能修改,所以可以避免由此引起的不必要的程序错误,简单的说就是一个不变的对象要比可变的对象更加容易维护;另一方面因为没有任何一个线程能够修改不变对象的内部状态,一个不变对象自动就是线程安全的,这样就可以省掉处理同步化的开销。一个不变对象可以方便的被共享访问)。
    所以结论就是:如果不需要对元素进行添加、删除、修改的时候,可以考虑使用元组,当然如果一个方法要返回多个值,使用元组也是不错的选择。
  • 2.2 元组在创建时间和占用的空间上面都优于列表。我们可以使用sys模块的getsizeof函数来检查存储同样的元素的元组和列表各自占用了多少内存空间,这个很容易做到。我们也可以在ipython中使用魔法指令%timeit来分析创建同样内容的元组和列表所花费的时间

集合总结:

  1. 平时使用比较少,但是需要掌握交集、并集、差集等运算。
微信关注.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 196,165评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,503评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,295评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,589评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,439评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,342评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,749评论 3 387
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,397评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,700评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,740评论 2 313
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,523评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,364评论 3 314
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,755评论 3 300
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,024评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,297评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,721评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,918评论 2 336