列表,元组,字典,集合的区别是python面试中最常见的一个问题。这个问题虽然很基础,但确实能反映出面试者的基础水平。
1.列表(List)
什么是列表呢?我觉得列表就是我们日常生活中经常见到的清单。比如,统计过去一周我们买过的东西,把这些东西列出来,就是清单。由于我们买一种东西可能不止一次,所以清单中是允许有重复项的。如果我们扩大清单的范围,统计我们过去一周所有的花费情况,那么这也是一个清单,但这个清单里会有类别不同的项,比如我们买东西是一种花费,交水电费也是一种花费,这些项的类型是可以使不同的。python的列表个跟清单的道理是一样的,特点就是:可重复,类型可不同。类型不同也是跟数组最本质的区别了。python里的列表用“[]”表示。
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 listA = ['a' , 'b' , 'c' , 1 , 2 ] listA[1 ] listA.append(3 ) listA.insert(3 , 'd' ) listA.extend([7 , 8 ]) print len (listA) listA.index(3 ) listA.index('100' ) print 5 in listA listA.remove(3 ) print listA.pop() for item in listA: print item ———————————————— 版权声明:本文为CSDN博主「Yeoman92」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/Yeoman92/article/details/56289287
extend (扩展) 与 append (追加) 的看起来类似,但实际上完全不同。
extend 接受一个参数,这个参数总是一个 list,并且把这个 list 中的每个元素添加到原 list 中。
append 接受一个参数,这个参数可以是任何数据类型,并且简单地追加到 list 的尾部。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 >>> li = ['a' , 'b' , 'c' ] >>> li.extend(['d' , 'e' , 'f' ]) >>> li ['a' , 'b' , 'c' , 'd' , 'e' , 'f' ] >>> len (li) 6 >>> li[-1 ] 'f' >>> li = ['a' , 'b' , 'c' ] >>> li.append(['d' , 'e' , 'f' ]) >>> li ['a' , 'b' , 'c' , ['d' , 'e' , 'f' ]] >>> len (li) 4 >>> li[-1 ] ['d' , 'e' , 'f' ] ———————————————— 版权声明:本文为CSDN博主「Yeoman92」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/Yeoman92/article/details/56289287
2.元组(Tuple)
元组和列表在结构上没有什么区别,唯一的差异在于元组是只读的,不能修改。元组用“()”表示
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 tuple1 = (1 ,2 ,'a' ,4 ,'5' ,6 ) print tuple1[2 ] print tuple1[-1 ] print tuple1[1 :3 ] print 1 in tuple1 for item in tuple1: print item for index in range (len (tuple1)): print tuple1[index] for index, item in enumerate (tuple1): print '%i, %s' % (index, item) ———————————————— 版权声明:本文为CSDN博主「Yeoman92」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/Yeoman92/article/details/56289287
3.字典(Dictionary)
字典定义了键和值之间一对一的关系,但它们是以无序的方式储存的。 Python 中的 dictionary 像 Java 中的 Hashtable 类的实例。定义 Dictionary 使用一对大(花)括号 { }
1, Dictionary 不只是用于存储字符串。Dictionary 的值可以是任意数据类型,包括字符串、整数、对象,甚至其它的 dictionary。
2, 在单个 dictionary 里,dictionary 的值并不需要全都是同一数据类型,可以根据需要混用和匹配。
1 2 3 4 5 6 7 8 9 10 11 12 13 dict1 = {'name' : 'yeoman' , 'age' : 24 , 'sex' : 'Male' } dict1['name' ] = 'yuanm' dict1['Age' ] = 25 del dict1['sex' ] dict1.clear() ———————————————— 版权声明:本文为CSDN博主「Yeoman92」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/Yeoman92/article/details/56289287
4.集合(Set)
Python的集合(set)和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素. 集合对象还支持union(联合), intersection(交), difference(差)和sysmmetric difference(对称差集)等数学运算.由于集合是无序的,所以,sets 不支持 索引, 分片, 或其它类序列(sequence-like)的操作。
1, 集合也存在不可变形式,frozenset为固定集合.
2, set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。
3, 注意:想要创建空集合,你必须使用 set() 而不是 {} ,后者用于创建空字典
4, 可以通过一个set函数转换成集合,如:
1 2 3 4 5 6 7 8 9 10 11 12 13 lst = [ 1 , 1 , 0 ] lst_set = set ( lst ) tup = (2 , 2 , 1 ) tup_set = set ( tup) for item in lst_set: print item ———————————————— 版权声明:本文为CSDN博主「Yeoman92」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/Yeoman92/article/details/56289287
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 list1 = [6 , 7 , 7 , 8 , 8 , 9 ] set2 = set (list1) set2.add(10 ) print set2 set3 = frozenset (list1) set2.discard(6 ) set2.remove(6 ) set2.pop() ———————————————— 版权声明:本文为CSDN博主「Yeoman92」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/Yeoman92/article/details/56289287