Python中list和dict的详细用法

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录

1、list扩展方式

一、列表的扩展

总结

二、列表的插入

三、列表的删除

(1)首先我们先看remove()

(2)del()

(3)pop()

二、排列顺序方式

三、dict中的所有用法

1.添加dict元素

 2.读取dict

3.赋值语句有两个功能

4.删除dict元素

5.清除所有的元素

6.dict特点


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的元素。

二、排列顺序方式

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])


 

你可能感兴趣的:(python,开发语言,pycharm)