提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录
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]
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,会按照先后顺序一个一个查找要删除的元素,找到匹配的第一个元素删除。
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 没有定义,整个删除掉了。
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的元素。
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)
在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
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}
创建一个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'))
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)
当我们不需要这个元素时,需要把元素从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)
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) #====》[]
查找速度快
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])