【转】Python元祖,列表,字典,集合的比较

http://rmingwang.com/python-tuple-list-dict-set.html

1. 元组

        可以包含不同类型的对象,但是是不可变的,不可以在增减元素,用()来定义.
元组的操作: tuple(obj),切片,in,for in,del,cmp,len,max,min

    1. #定义一个元组
    2. tuple1 =()
    3. tuple1 = tuple({1,2,3,4,5,‘6‘})
    4. tuple1 = (1, 2, ‘3‘, 4, ‘5‘)
    5. # 定义了一个元组之后就无法再添加或修改元组中的元素,但是可以重新赋值
    6. print tuple1[0] # 元组的元素都有确定的顺序。元组的索引也是以0为基点的
    7. print tuple1[-1] # 负的索引从元组的尾部开始计数
    8. print tuple1[1:3] # 元组也可以进行切片操作。对元组切片可以得到新的元组。
    9. # 可以使用 in 运算符检查某元素是否存在于元组中。
    10. print 1 in tuple1 # True
    11. #使用for in 进行遍历元组
    12. for item in tuple1:
    13. print item
    14. # 如果需要获取item的序号 可以使用下面的遍历方法:
    15. for index in range(len(tuple1)):
    16. print tuple1[index]
    17. # 还可以使用内置的enumerate函数
    18. for index, item in enumerate(tuple1):
    19. print ‘%i, %s‘ % (index, item)
    20. print max(tuple1)
    21. print min(tuple1)
    22. print len(tuple1)

2. 列表

        列表是Python中最具灵活性的有序集合对象类型,与字符串不同的是,列表可以包含任何种类的对象:数字,字符串,甚至是其他列表.并且列表都是可变对象,它支持在原处修改的操作.也可以通过指定的索引和分片获取元素.列表就可元组的可变版本,用[]来定义.
列表的操作: list(obj),切片,in,for in,del,cmp,len,max,min
额外的操作:
list.append(),list.insert(index,obj),list.extend(seq),list.remove(obj),list.pop(index=-1),list.count(obj),sorted(list),reversed(list),list.index(obj)

  1. #定义一个列表
  2. listA = [‘a‘, ‘b‘, ‘c‘, 1, 2]
  3. list(obj)
  4. #把对象转换成列表,obj可以是元组,字典,字符串等
  5. print list((1,2,3,4,5,6,8,6))
  6. #[1,2,3,4,5,6,8,6]
  7. haloword = list(‘halo word‘)
  8. print haloword
  9. #[‘h‘, ‘a‘, ‘l‘, ‘o‘, ‘ ‘, ‘w‘, ‘o‘, ‘r‘, ‘d‘]
  10. #元素计数
  11. print haloword.count(‘o‘)
  12. #2
  13. #元素查找(返回第一次出现索引,没有则报错)
  14. print haloword.index(‘o‘)
  15. #3
  16. #haloword[3]=‘o‘
  17. #元素排序,倒置位置
  18. numbers = [1,2,3,‘4‘,5,‘6‘]
  19. print sorted(numbers)
  20. #[1, 2, 3, 5, ‘4‘, ‘6‘]
  21. print list(reversed(numbers))
  22. #[‘6‘, 5, ‘4‘, 3, 2, 1]
  23. # 向 list 中增加元素
  24. # 1.使用append 向 list 的末尾追加单个元素。
  25. listA.append(3)
  26. # 2.使用 insert 将单个元素插入到 list 中。数值参数是插入点的索引
  27. listA.insert(3, ‘d‘) # 在下标为3处添加一个元素
  28. # 3.使用 extend 用来连接 list
  29. listA.extend([7, 8])
  30. # extend 和 append 看起来类似,但实际上完全不同。
  31. # extend 接受一个参数,这个参数总是一个 list,
  32. # 并且把这个 list 中的每个元素添加到原 list 中。
  33. # 另一方面,append 接受一个参数,这个参数可以是任何数据类型,并且简单地追加到 list 的尾部。
  34. # 获取列表的长度
  35. print len(listA) # 9
  36. # 在 list 中搜索
  37. listA.index(3) # index 在 list 中查找一个值的首次出现并返回索引值。
  38. listA.index(‘100‘) # 如果在 list 中没有找到值,Python 会引发一个异常。
  39. # 要测试一个值是否在 list 内,使用 in。如果值存在,它返回 True,否则返为 False 。
  40. print 5 in listA
  41. # 从 list 中删除元素
  42. # remove 从 list 中 仅仅 删除一个值的首次出现。如果在 list 中没有找到值,Python 会引发一个异常
  43. listA.remove(3)
  44. # pop 它会做两件事:删除 list 的最后一个元素,然后返回删除元素的值。
  45. print listA.pop()
  46. # 遍历list
  47. for item in listA:
  48. print item

3. 字典

        字典(Dictionary) 是 Python 的内置数据类型之一,它定义了键和值之间一对一的关系,但它们是以无序的方式储存的。
        定义 Dictionary 使用一对大(花)括号” { } ”。
字典的操作: dict(obj),in,for key in dict,del,cmp,len,max,min
额外的操作:
dict[key],dict.keys(),dict.fromkeys(seq,value),dict.has_key(key),dict.get(key,default),dict.items(),dict.values():,dict.update(dict2),dict.pop(key),dict.setdefault(key ,defaultvalue),dict.clear(),dict.copy()

  1. # 定义一个字典
  2. # Dictionary 不只是用于存储字符串。Dictionary 的值可以是任意数据类型,
  3. # 包括字符串、整数、对象,甚至其它的 dictionary。
  4. # 在单个 dictionary 里,dictionary 的值并不需要全都是同一数据类型,可以根据需要混用和匹配。
  5. dict1 = {‘name‘ : ‘LiuZhichao‘, ‘age‘ : 24, ‘sex‘ : ‘Male‘}
  6. dict1[‘name‘] = ‘Liuzc‘ # 为一个已经存在的 dictionary key 赋值,将简单覆盖原有的值。
  7. dict1[‘Age‘] = 25 # 在 Python 中是区分大小写的 age和Age是完全不同的两个key
  8. #使用dict()创建字典
  9. dict_test = dict(([‘x‘,1],[‘y‘,2]))
  10. #{‘y‘: 2, ‘x‘: 1}
  11. #使用dict.fromkeys()创建字典
  12. #创建并返回一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值(默认为None)
  13. dict.fromkeys(seq,val=None)
  14. #遍历数组 form key in dict_test (不可以更改字典长度,报错)
  15. # 方法 1.报错
  16. form key in dict_test:
  17. if(key==‘x‘):
  18. del dict_test[key]
  19. # 方法 2.正常
  20. from key in dict_test.keys()
  21. if(key==‘x‘):
  22. del dict_test[key]
  23. #dict.has_key(key)判断key是否存在
  24. dict_test.has_key(‘x‘)
  25. #True
  26. #dict.get(key,default) 返回键值key的值,若是key不存在,返回default的值
  27. dict_test.get(‘x‘,0)
  28. #1
  29. #dict.update(dict2) 将dict2的键值对列表添加到字典dict中去
  30. dict_test.update({
  31. ‘name‘:‘rming‘,
  32. ‘age‘:100,
  33. })
  34. #{‘y‘: 2, ‘x‘: 1,‘name‘:‘rming‘,‘age‘:100}
  35. #dict.pop(key)返回键值key的value ,删除原字典该减值
  36. print dict_test.pop(‘name‘)
  37. print dict_test
  38. #rming
  39. #{‘y‘: 2, ‘x‘: 1,‘age‘:100}
  40. #dict.setdefault(key ,defaultvalue) 类似get方法,能够获得给定key的value,此外setdefault还能在自动重不含有给定key的情况下设定相应的key-value
  41. dict_test.setdefault(‘sex‘,‘male‘)
  42. #male
  43. #{‘y‘: 2, ‘x‘: 1,‘age‘:100,‘sex‘,‘male‘}
  44. #dict.copy():返回具有相同key-value的新字典,为浅复制(shallow copy)
  45. new_dict = dict_test.copy()
  46. #key in dict 是否有该键,同 dict.has_key(key)
  47. ‘x‘ in new_dict
  48. #True
  49. # 从字典中删除元素
  50. del dict1[‘sex‘] # del 允许您使用 key 从一个 dictionary 中删除独立的元素
  51. dict1.clear() # clear 从一个 dictionary 中清除所有元素

4. 集合

        Python的集合(set)和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素. 集合对象还支持union(联合), intersection(交), difference(差)和sysmmetric difference(对称差集)等数学运算.由于集合是无序的,所以,sets 不支持 索引, 分片, 或其它类序列(sequence-like)的操作。

    1. #定义一个集合
    2. set1 = {1, 2, 3, 4, 5}
    3. # 或者使用 set 函数
    4. list1 = [6, 7, 7, 8, 8, 9]
    5. set2 = set(list1)
    6. set2.add(10) # 添加新元素
    7. print set2 # set([8, 9, 6, 7]) 去掉重复内容,而且是无序的
    8. set3 = frozenset(list1)
    9. set3.add(10) # 固定集合不能添加元素
    10. #方法(所有的集合方法):
    11. s.issubset(t) #如果s是t的子集,返回True,否则返回False
    12. s.issuperset(t) #如果s是t的超集,返回True,否则返回False
    13. s.union(t) #返回一个新集合, 该集合是s和t的并集
    14. s.intersection(t) #返回一个新集合, 该集合是s和t的交集
    15. s.difference(t) #返回一个新集合, 该集合是s的成员, 但不是t的成员, 即返回s不同于t的元素
    16. s.symmetric_defference(t) #返回所有s和t独有的(非共同拥有)元素集合
    17. s.copy() #返回一个s的浅拷贝, 效率比工厂要好
    18. #方法(仅适用于可变集合):以下方法参数必须是可哈希的
    19. s.update(t) #用t中的元素 修改s,即s现在包含s或t的成员
    20. s.intersection_update(t) #s中的成员是共同属于s和t的元素
    21. s.difference_update(t) #s中的成员是属于s但不包含在t中的元素
    22. s.symmetric_difference_update(t) #s中的成员更新为那些包含在s或t中,但不是s和t共有的元素
    23. s.add(obj) #在集合s中添加对象obj
    24. s.remove(obj) #从集合s中删除对象obj,如果obj不是集合s中的元素(obj not in s),将引发keyError错误
    25. s.discard(obj) #如果obj是集合s中的元素,从集合s中删除对象obj
    26. s.pop() #删除集合s中得任意一个对象,并返回它
    27. s.clear() #删除集合s中的所有元素
    28. ## 集合有并集,交集,求差操作
    29. ## 并集:intersection() 方法返回一个新集合,包含在两个集合中同时出现的所有元素。
    30. ## 交集:union() 方法返回一个新集合,包含在两个 集合中出现的元素。
    31. ## 差集:difference() 方法返回的新集合中,包含所有在 集合A出现但未在集合B中的元素。
    32. ## symmetric_difference() 方法返回一个新集合,包含所有只在其中一个集合中出现的元素。
    33. # 删除元素
    34. set2.discard(6) # 当元素不存在时,不会引发异常
    35. set2.remove(6) # 与discard的区别在于,如果没有要删除的元素,remove会引发一个异常
    36. set2.pop() # 因为set是无序的,所以pop会随机的从set中删除一个元素
时间: 2024-10-08 00:24:12

【转】Python元祖,列表,字典,集合的比较的相关文章

python基础 filter ,列表,字典,集合 中根据 条件 筛选 数据

from random import randint data = [randint(-10, 10) for _ in xrange(10)] print data e = filter(lambda x: x >= 0, data) print e 或者使用  列表解析       速度快 [x for x in data if x >= 0] 对字典的筛选 d = {x: randint(60, 100) for x in xrange(1, 21)} print d print {k:

基本数据类型(字符串_数字_列表_元祖_字典_集合)

基本数据类型(字符串_数字_列表_元祖_字典_集合) 1.字符串 2.数字 除了布尔类型外,int.long.float和complex都可以使用的运算为:加.减.乘.除.整除.幂运算和取余 3.列表和元组 列表的内容可变,可以包含任意对象,使用中括号表示.元组的内容不可变,可以包含任意对象,使用圆括号表示.元组 1 l = [1, 2, 3, '4', '5'] # 列表 2 l = list((1, 2, 3, '4', '5')) 3 4 t = (1, 2, 3, '4', '5') #

Python 小栈_03:Python的列表、元祖和字典

今日学习: 一.列表(有序的)1.索引.切片(切片后仍为列表)lis=[11,22,33,44,22,0]# v=lis[2]# print(v)# v=lis[0:2]# print(v)# 2.支持for循环,为可迭代对象# for item in lis:# print(item)# 3.修改(索引和切片都可).删除(用del).增加列表# lis[0]=22# print(lis)# lis[0:2]=22,33# print(lis)# del lis[2]# print(lis)#

python元祖和列表

下面讲到的分别有: 列表:元祖 列表的定义 list(列表)是python中使用最频繁的数据类型,在其他语言中叫做数组 专门储存一串信息 列表[  ]定义,数据之间有逗号分隔 列表的索引是从0开始的 索引就是数据在列表中的位置编号,索引又被称为下标 !!!!注意从列表中取值是,如果超过索引的范围就会程序报错 name_list = ["zhangsan", "lisi", "wangwu"]      列表常用的操作啊 在随意一个文件里创建一个列

python :列表 字典 集合 类 ----局部变量可以改全局变量

#列表 字典 集合 类 ----局部变量可以改全局变量,除了整数和字符串 names=["alex","jack","luck"] def func(names): names[0]='金角大王' print("inside name:" ,names) func(names) print (names) #字符串 name='jack' name1=name name='jack_chen' print(name,name1

python基础一 -------如何在列表字典集合中根据条件筛选数据

如何在列表字典集合中根据条件筛选数据 一:列表 先随机生成一个列表,过滤掉负数 1,普通for循环迭代判断 2,filter()函数判断,filter(函数,list|tuple|string) 1 filter(lambda x:x>0,data) 3,列表推倒式 4,效率对比:还是列表推导式稍高 二:字典 1,跟列表类似,推导式 先生成随机的字典(key从1-20) 过滤掉value是负数的值 三:集合 随机生成10个元素的集合 过滤掉小于0的元素,跟字典类似

Python元祖

Python元祖(tuple)与列表(list)类似,只是tuple中的值是不能被修改的. 定义元祖使用 小括号 () aTuple=(1,2,3,4,'a') 访问元素 使用下标 aTuple[1]   -->    2 修改元祖中的元素 aTuple[1]=3  会出先异常 TypeError: Tuple object dose not support item assignment. 也可以使用切片 aTuple(start:end:step)  返回切好的元祖. 元祖的方法: inde

python基础知识之列表、元祖、字典、集合、字符串。

1.可变类型之列表 列表用 [ ]来定义是可变的,可以通过索引值来去查询里面的字段可以可以追加,删除等 ```python names='zhangyang guyun xiangpeng xuliangwei' names = ['zhang', 'zhuang', 'chen', 'qiang'] name_list = [['zhang', 'zhuang'], ['chen', 'qiang']] list_num = [1, 4, 5, 2, 3, 4, 52, 54] print(l

python基础--列表、元祖、字典、集合

列表(List) 1.列表特点 列表是可变的!! list 是一种有序的序列,可以添加.删除其中的元素,并且可以通过下标(索引)访问 数据 2.简单的常用操作 A.通过下表访问元素 1 print(list1[0]) ##正序 2 print(list1[-1]) ##倒序 3 5 list[0] = '123' ##修改指定位置的值 B.切片 1 print(list[1:3]) 3.常用操作: 1 ##append:追加元素 2 list1.append('赵四') 3 4 ##extend

Python基础-列表、元祖、字典、字符串

列表和分组 序列概览: 数据结构是通过某种方式组织在一起的数据元素的集合.这些元素可以是数字.字符,甚至可以是其他数据结构. 在python中,最基本的数据结构是序列(sequence). 序列中的每一个元素被分配一个序号----即元素的位置,也称为索引.下标.第一个索引是0,第二个索引是1,以此类推. Python包含6种内建的序列,此次重点讨论最常用的两种类型:列表.元祖.其他内建序列类型包括:字符串.Unicode字符串.buffer对象和xrange对象.接下来讲解对所有序列都通用的操作