Python中list和dict的详细用法

简介: Python中list和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的元素。

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])
目录
相关文章
|
7天前
|
C语言 Python
[oeasy]python054_python有哪些关键字_keyword_list_列表_reserved_words
本文介绍了Python的关键字列表及其使用规则。通过回顾`hello world`示例,解释了Python中的标识符命名规则,并探讨了关键字如`if`、`for`、`in`等不能作为变量名的原因。最后,通过`import keyword`和`print(keyword.kwlist)`展示了Python的所有关键字,并总结了关键字不能用作标识符的规则。
25 9
|
15天前
|
数据挖掘 大数据 数据处理
python--列表list切分(超详细)
通过这些思维导图和分析说明表,您可以更直观地理解Python列表切分的概念、用法和实际应用。希望本文能帮助您更高效地使用Python进行数据处理和分析。
33 14
|
17天前
|
数据挖掘 大数据 数据处理
python--列表list切分(超详细)
通过这些思维导图和分析说明表,您可以更直观地理解Python列表切分的概念、用法和实际应用。希望本文能帮助您更高效地使用Python进行数据处理和分析。
31 10
|
1月前
|
Python
Python三引号用法与变量详解
本文详细介绍了Python中三引号(`&quot;&quot;&quot;` 或 `&#39;&#39;&#39;`)的用法,包括其基本功能、如何在多行字符串中使用变量(如f-string、str.format()和%操作符),以及实际应用示例,帮助读者更好地理解和运用这一强大工具。
53 2
|
2月前
|
测试技术 开发者 Python
在 Python 中创建列表时,应该写 `[]` 还是 `list()`?
在 Python 中,创建列表有两种方法:使用方括号 `[]` 和调用 `list()` 函数。虽然两者都能创建空列表,但 `[]` 更简洁、高效。性能测试显示,`[]` 的创建速度比 `list()` 快约一倍。此外,`list()` 可以接受一个可迭代对象作为参数并将其转换为列表,而 `[]` 则需要逐一列举元素。综上,`[]` 适合创建空列表,`list()` 适合转换可迭代对象。
在 Python 中创建列表时,应该写 `[]` 还是 `list()`?
|
2月前
|
缓存 测试技术 开发者
深入理解Python装饰器:用法与实现
【10月更文挑战第7天】深入理解Python装饰器:用法与实现
22 1
|
2月前
|
传感器 大数据 数据处理
深入理解Python中的生成器:用法及应用场景
【10月更文挑战第7天】深入理解Python中的生成器:用法及应用场景
88 1
|
2月前
|
存储 大数据 Python
案例学Python:filter()函数的用法,高级!
`filter()`函数是Python中处理序列数据的强大工具,它允许我们高效地根据条件过滤元素。通过结合匿名函数、常规函数或直接利用Python的内置逻辑,`filter()`提供了灵活且高效的过滤机制,尤其在大数据处理和内存敏感的应用中展现出其价值。掌握 `filter()`的使用,不仅能提升代码的可读性和效率,还能更好地适应Python的函数式编程风格。
46 2
|
2月前
|
Python
深入了解Python中星号变量的特殊用法
深入了解Python中星号变量的特殊用法
30 0
|
2月前
|
PyTorch 测试技术 算法框架/工具
Python中Thop库的常见用法和代码示例
肆十二在B站分享了关于THOP(Torch-OpCounter)的实战教学视频。THOP是一个用于计算PyTorch模型操作数和计算量的工具,帮助开发者评估模型复杂度和性能。本文介绍了THOP的安装、使用方法及基本用例,包括如何计算模型的FLOPs和参数量。
158 0