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])
目录
相关文章
|
12月前
|
存储 JavaScript Java
(Python基础)新时代语言!一起学习Python吧!(四):dict字典和set类型;切片类型、列表生成式;map和reduce迭代器;filter过滤函数、sorted排序函数;lambda函数
dict字典 Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 我们可以通过声明JS对象一样的方式声明dict
601 2
|
12月前
|
机器学习/深度学习 PyTorch 算法框架/工具
python torch基础用法
本教程系统讲解PyTorch基础,涵盖张量操作、自动求导、神经网络构建、训练流程、GPU加速及模型保存等核心内容,结合代码实例帮助初学者快速掌握深度学习开发基础,是入门PyTorch的实用指南。
956 6
|
12月前
|
存储 Java 索引
(Python基础)新时代语言!一起学习Python吧!(二):字符编码由来;Python字符串、字符串格式化;list集合和tuple元组区别
字符编码 我们要清楚,计算机最开始的表达都是由二进制而来 我们要想通过二进制来表示我们熟知的字符看看以下的变化 例如: 1 的二进制编码为 0000 0001 我们通过A这个字符,让其在计算机内部存储(现如今,A 字符在地址通常表示为65) 现在拿A举例: 在计算机内部 A字符,它本身表示为 65这个数,在计算机底层会转为二进制码 也意味着A字符在底层表示为 1000001 通过这样的字符表示进行转换,逐步发展为拥有127个字符的编码存储到计算机中,这个编码表也被称为ASCII编码。 但随时代变迁,ASCII编码逐渐暴露短板,全球有上百种语言,光是ASCII编码并不能够满足需求
456 4
|
Go 调度 Python
Golang协程和Python协程用法上的那些“不一样”
本文对比了 Python 和 Go 语言中协程的区别,重点分析了调度机制和执行方式的不同。Go 的协程(goroutine)由运行时自动调度,启动后立即执行;而 Python 协程需通过 await 显式调度,依赖事件循环。文中通过代码示例展示了两种协程的实际运行效果。
482 7
|
索引 Python
Python错误 - 'list' object is not callable 的问题定位与解决
出现编程问题并不可怕,关键在于是否可以从中学习与成长。遇到'list' object is not callable这样的错误,我们不仅需要学会应对,更需要了解其背后的原因,避免类似的问题再次出现。记住,Python的强大功能和灵活性同时也意味着我们需要对其理解更准确,才能更好的使用它。
1835 70
|
存储 数据处理 Python
python dict的所有基础知识
python dict的所有基础知识
711 0
|
Python
Python教程:os 与 sys 模块详细用法
os 模块用于与操作系统交互,主要涉及夹操作、路径操作和其他操作。例如,`os.rename()` 重命名文件,`os.mkdir()` 创建文件夹,`os.path.abspath()` 获取文件绝对路径等。sys 模块则用于与 Python 解释器交互,常用功能如 `sys.path` 查看模块搜索路径,`sys.platform` 检测操作系统等。这些模块提供了丰富的工具,便于开发中处理系统和文件相关任务。
673 14
|
人工智能 数据库连接 API
掌握Python的高级用法:技巧、技术和实用性示例
本文分享了Python的高级用法,包括生成器、装饰器、上下文管理器、元类和并发编程等。生成器通过`yield`实现懒加载序列;装饰器用于增强函数功能,如添加日志或性能分析;上下文管理器借助`with`语句管理资源;元类动态定制类行为;并发编程利用`threading`和`asyncio`库提升任务执行效率。掌握这些高级概念可优化代码质量,解决复杂问题,提高程序性能与可维护性。
413 6
|
SQL Oracle 关系型数据库
【YashanDB知识库】共享利用Python脚本解决Oracle的SQL脚本@@用法
【YashanDB知识库】共享利用Python脚本解决Oracle的SQL脚本@@用法

推荐镜像

更多