1、list扩展方式
一、列表的扩展
number=[1,2,3,4,5] number [1, 2, 3, 4, 5] number.append(6) number [1, 2, 3, 4, 5, 6] number.append(7,8) Traceback (most recent call last): Python Shell, prompt 34, line 1 builtins.TypeError: append() takes exactly one argument (2 given)
我们可以发现一开始number列表里面有1,2,3,4,5五个值,然后用.append(6),增加了一个值。此时number变成[1,2,3,4,5,6]
那么我们可以不可以一次添加两个值呢,然后用了number.append(7,8)我们发现python告诉我们append只能有一个参数,但此时却给了两个,所以出错了。我们可以采用number.extend(7,8)进行添加。如下:
number.extend(7,8,9) Traceback (most recent call last): Python Shell, prompt 41, line 1 builtins.TypeError: extend() takes exactly one argument (3 given)
然后发现又出错了,python还是说extend只有一个参数,但此时却给了3个。原来extend()方法事实上使用一个列表来扩展另一个列表。所以应该这样写:
number.extend([7,8,9]) number [1, 2, 3, 4, 5, 6, 7, 8, 9]
这样就可以了
那number.append()方法可以不可以也使用一个列表来扩展列表呢?
number [1, 2, 3, 4, 5] number.append([1,2,3]) number [1, 2, 3, 4, 5, [1, 2, 3]]
我们发现append仅仅只是添加了一个[1,2,3]这个元素。
总结
list.append()方法仅适用于向后面添加元素,参数可以是任何东西,将作为元素添加到列表尾部;而list.extend()可以适用多个元素在一个列表的方法进行扩展原列表,参数是序列,序列中的元素将逐项添加到列表的尾部。我们从字面的意思也可以看出来。append是添加(一个),extend是扩展(多个)。
二、列表的插入
使用list.insert(),我们通过help(list.insert)可以发现,insert方法需要两个参数。第一个参数是在什么位置插入,第二个参数是插入的元素。如下
number=[1,2,3,4,5] number.insert(0,0) number [0, 1, 2, 3, 4, 5] number.insert(3,10) number [0, 1, 2, 10, 3, 4, 5]
三、列表的删除
删除列表元素,有三种方法:remove()、del()、pop()
number=[1,2,3,4,5]
(1)首先我们先看remove()
number.remove(2) number [1, 3, 4, 5]
所以你不需要知道元素在什么位置,只知道元素在这个列表中就可以,元素不在列表中会报错。
number.remove(2) Traceback (most recent call last): Python Shell, prompt 119, line 1 builtins.ValueError: list.remove(x): x not in list
#很清晰的告诉我们remove(x)x也就是2 ,不在列表中。
当我们移除的元素在列表中有多个怎么办呢,会不会一下全部删除掉?
number=[1,1,1,3,4,5,3,6,2,1,] number [1, 1, 1, 3, 4, 5, 3, 6, 2, 1] number.remove(1) number [1, 1, 3, 4, 5, 3, 6, 2, 1]
所以不会一下删除掉,python,会按照先后顺序一个一个查找要删除的元素,找到匹配的第一个元素删除。
(2)del()
remove()不能指定删除某个位置的元素,这时就需要del来实现。
number [1, 2, 3, 4, 5] del number[3] number [1, 2, 3, 5]
#删除了列表中索引值为3的(也就是第四个)元素。
如果想删除整个列表。可以采用del+列表名 直接删除
number [1, 2, 3, 5] del number number Traceback (most recent call last): Python Shell, prompt 142, line 1 builtins.NameError: name 'number' is not defined
#告诉我们number 没有定义,整个删除掉了。
(3)pop()
pop()方法默认弹出列表中最后一个元素。
number=[1,2,3,4,5] number.pop() 5 number [1, 2, 3, 4]
#这时元素5已经被弹出来,列表中就不存在5了。
pop也可以更加灵活的应用 pop(索引值),弹出对应的元素
number [1, 2, 3, 4] number.pop(1) 2 number [1, 3, 4]
#弹出了索引值为1的元素。
2、排列顺序方式
def sort_func(x): return x[2] //控制由第几个字母开始升序排列 fruit_list = ["cherry", "litchi", "strawberry", "mangosteen", "pomelo", "pineapple", "pitaya", "durian"] fruit_list.sort(key=sort_func) print(fruit_list)
一、dict中的所有用法
在pycharm中输入dict,并按住Ctrl点击dict,查看dict源码
def clear(self): # real signature unknown; restored from __doc__ """ D.clear() -> None. Remove all items from D. """ pass def copy(self): # real signature unknown; restored from __doc__ """ D.copy() -> a shallow copy of D """ pass @staticmethod # known case def fromkeys(*args, **kwargs): # real signature unknown """ Create a new dictionary with keys from iterable and values set to value. """ pass def get(self, *args, **kwargs): # real signature unknown """ Return the value for key if key is in the dictionary, else default. """ pass def items(self): # real signature unknown; restored from __doc__ """ D.items() -> a set-like object providing a view on D's items """ pass def keys(self): # real signature unknown; restored from __doc__ """ D.keys() -> a set-like object providing a view on D's keys """ pass def pop(self, k, d=None): # real signature unknown; restored from __doc__ """ D.pop(k[,d]) -> v, remove specified key and return the corresponding value. If the key is not found, return the default if given; otherwise, raise a KeyError. """ pass def popitem(self, *args, **kwargs): # real signature unknown """ Remove and return a (key, value) pair as a 2-tuple. Pairs are returned in LIFO (last-in, first-out) order. Raises KeyError if the dict is empty. """ pass def setdefault(self, *args, **kwargs): # real signature unknown """ Insert key with a value of default if key is not in the dictionary. Return the value for key if key is in the dictionary, else default. """ pass def update(self, E=None, **F): # known special case of dict.update """ D.update([E, ]**F) -> None. Update D from dict/iterable E and F. If E is present and has a .keys() method, then does: for k in E: D[k] = E[k] If E is present and lacks a .keys() method, then does: for k, v in E: D[k] = v In either case, this is followed by: for k in F: D[k] = F[k] """ pass def values(self): # real signature unknown; restored from __doc__ """ D.values() -> an object providing a view on D's values """ pass
1.添加dict元素
Python中的dict就是保存映射关系,在dict中每一个key和value是一一对应的,编写一个新的dict元素,将新的dict()加入其中。
d = { 'int': 45, 'float': 6.1, 'bool': True, 'byte': b/'1', 'str': "1" } d ['tuple'] =(1,) print(d) #{'int': 45, 'bool': True, 'byte': b/'1', 'str': "1", 'tuple': (1,), 'float': 60}
2.读取dict
创建一个dict ,dict 通过key找到对应的value的功能。还可以通过key来获取对应的value,dict提供get方法,把key当作参数传递给get方法。当Key不存在时也不会出错。
d ={ 'int':1, 'float':6.1, 'bool':True, 'byte':b/'1', 'str':"1", 'tuple':(1,) } print(d['int']) print(d['float']) print(d['bool']) print(d['byte']) print(d['str']) print(d['tuple']) print(d.get('list'))
3.赋值语句有两个功能
1.当key不存在时,往dict中添加对应的key:value元素。
2.当key存在时,会更新dict,用新的value 替换原来的value。
在使用赋值语句往dict中添加元素时,为了避免不必要的覆盖问题,我们需要先判断key是否存在,然后再做更新。
d = { 'int': 1, 'float': 6.1, 'bool': True, 'byte': b/'1', 'str': "1" } d['int'] =2 print(d)
4.删除dict元素
当我们不需要这个元素时,需要把元素从dict中删除,pop()方法快速删除元素。但需要指定需要删除元素的key,并返回value。
<**注>**pop()方法的参数是dict中的key,当key不存在时,同样会引起错误。
d = { 'int': 1, 'float': 6.1, 'bool': True, 'byte': b/'1', 'str': "1" } print(d) int_score =d.pop('int') print(int_score) print(d) float_score =d.pop('float') print(float_score) print(d)
5.清除所有的元素
dict 提供clear()函数,直接清除dict 中所有元素。
d = {'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]} print(d) # ==> {'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]} d.clear() print(d) #====》[]
6.dict特点
查找速度快
dict的第一个特点是查找速度快,而list的查找速度随着元素增加而逐渐下降。dict的缺点是占用内存大,还会浪费很多内容,list正好相反,占用内存小,但是查找速度慢。
遍历dict有两种方法
第一种是遍历dict的所有key,并通过key获得对应的value。
第二种方法是通过dict提供的items()方法,items()方法会返回dict中所有的元素,每个元素包含key和value。
d = {'A': [50, 61, 66], 'B': [80, 61, 66], 'C': [88, 75, 90]} for key,value in d.items(): if value > 60: print(key,value) ==> #('B', [80, 61, 66]) #('A', [50, 61, 66]) #('C', [88, 75, 90])