Python学习,第五课 - 列表、字典、元组操作

本篇主要详细讲解Python中常用的列表、字典、元组相关的操作

一、列表

列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储、修改等操作

通过下标获取元素

#先定义一个列表
letters = [‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘]

letters[1]
#输出:b
#列表的索引是从0开始

letters[-1]
#输出:e
#也可以倒着取,-1既倒数第一个元素

切片:获取列表中多个元素

letters = [‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘]

#从下标1开始,取到下标3之前,不包括下标3
letters[1:3]
#输出结果:[‘b‘, ‘c‘]

#取下标2到-1,-1既倒数第一个,这里不包括-1
letters[2:-1]
#输出结果:[‘c‘, ‘d‘]

letters[0:-1]
#如果从0开始取,0可以不输入,下面这个和上面一样的效果
letters[:-1]
#输出结果都是:[‘a‘, ‘b‘, ‘c‘, ‘d‘]

#取到结尾,如果想取到最后一个不能用-1,直接忽略既可
letters[1:]
#输出结果:[‘b‘, ‘c‘, ‘d‘, ‘e‘]

#如果在后面加一个2,就是在原有的条件下,每隔一个元素获取一个
letters[1::2]
#输出结果:[‘b‘, ‘d‘]

追加 append

letters = [‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘]
letters.append(‘f‘)
print(letters)
#输出结果:[‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘, ‘f‘]
#就是在列表结尾添加一个新元素

插入 insert

letters = [‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘]
letters.insert(3, ‘F‘)
print(letters)
#输出结果:[‘a‘, ‘b‘, ‘c‘, ‘F‘, ‘d‘, ‘e‘]
#在下标3的位置插入一个元素

修改

letters = [‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘]
letters[0] = ‘A‘
print(letters)
#输出结果:[‘A‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘]
#修改指定下标的元素

删除

letters = [‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘]

#del删除索引元素
del letters[0]
#输出结果:[‘b‘, ‘c‘, ‘d‘, ‘e‘]

#remove删除指定元素
letters.remove(‘b‘)
#输出结果:[‘a‘, ‘c‘, ‘d‘, ‘e‘]

#pop删除列表中最后一个值
letters.pop()
#输出结果:[‘a‘, ‘b‘, ‘c‘, ‘d‘]

扩展 extend

letters = [‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘]
letters2 = [1, 2, 3, 4]
letters.extend(letters2)
#输出结果:[‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘, 1, 2, 3, 4]
#既把列表letters2的元素都添加到letters中

拷贝

letters = [‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘, [‘f‘, ‘g‘]]
letters_copy = letters.copy()
print(letters_copy)
#输出结果:[‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘, [‘f‘, ‘g‘]]

看上面的方法好像确实copy成功了。但是还没完,我们在来试试修改copy之后的列表

letters = [‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘, [‘f‘, ‘g‘]]
letters_copy = letters.copy()
letters_copy[5][1] = ‘h‘
print(letters)
print(letters_copy)
#输出结果:
#[‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘, [‘f‘, ‘h‘]]
#[‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘, [‘f‘, ‘h‘]]

我们上面吧 letters_copy 的第5个元素中的 ‘g’改成‘h’,结果打印结果发现,letters也跟着改变了。

其实此处copy是浅copy,只copy列表的第一层,第二层没有copy,而是指向相同地址

第二个列表中的元素只是第一个列表中每一个元素的一个引用

那么重点来了,我们想要完全copy一个列表的时候怎么办?当然有办法

引用一个copy模块,调用copy模块中的deepcopy方法,既可实现深copy

import copy

letters = [‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘, [‘f‘, ‘g‘]]
letters_copy = copy.deepcopy(letters)
letters_copy[5][1] = ‘h‘
print(letters)
print(letters_copy)
#输出结果:
#[‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘, [‘f‘, ‘g‘]]
#[‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘, [‘f‘, ‘h‘]]

这样就可以完全copy了。

统计 count

letters = [‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘, ‘b‘]
print(letters.count(‘b‘))
#输出结果:2
#统计指定元素在列表中的数量

排序 sort

letters = [‘a‘, ‘#b‘, ‘1f‘, ‘c‘, ‘e‘, ‘d‘, ‘承受‘]
letters.sort()
print(letters)
#输出结果:[‘#b‘, ‘1f‘, ‘a‘, ‘c‘, ‘d‘, ‘e‘, ‘承受‘]
#将列表安装顺序从新排序
#排序的顺序是,特殊符号-->数字-->字母-->汉字

#这里要注意,在Python 3中,不同数据类型是不能排序的,否则会报错
letters = [‘a‘, ‘b‘, ‘f‘, ‘c‘, ‘e‘, ‘d‘, 1, 2]
letters.sort()
#像上面这样的列表排序就会报错
#TypeError: unorderable types: int() < str()

反转 reverse

letters = [‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘]
letters.reverse()
print(letters)
#输出结果:[‘e‘, ‘d‘, ‘c‘, ‘b‘, ‘a‘]
#将列表倒序

获取下标 index

letters = [‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘]
print(letters.index(‘b‘))
#输出结果:1
#获取指定元素的下标位置

二、字典

字典是一种key - value 的数据类型,使用就像我们用的字典,通过笔划、字母来查对应页的详细内容,一个键对应一个值。

语法如下:

info = {
    ‘name01‘: ‘刘玄德‘,
    ‘name02‘: ‘关云长‘,
    ‘name03‘: ‘张翼德‘,
    ‘name04‘: ‘赵子龙‘,
    ‘name05‘: ‘马孟起‘
}

这里要说下字典有哪些特性:

  • 字典是无序的,所以字典中元素每次的位置都可能变化
  • 字典中key必须是唯一的,所以字典的键天生就去重了

增加

info = {
    ‘name01‘: ‘刘玄德‘,
    ‘name02‘: ‘关云长‘,
    ‘name03‘: ‘张翼德‘,
    ‘name04‘: ‘赵子龙‘,
    ‘name05‘: ‘马孟起‘
}
info[‘name06‘] = ‘黄汉升‘
print(info)
#输出结果:{‘name05‘: ‘马孟起‘, ‘name01‘: ‘刘玄德‘, ‘name03‘: ‘张翼德‘, ‘name06‘: ‘黄汉升‘, ‘name04‘: ‘赵子龙‘, ‘name02‘: ‘关云长‘}#直接给一个不存在的键赋值就可以添加一个字典元素了

修改

info = {
    ‘name01‘: ‘刘玄德‘,
    ‘name02‘: ‘关云长‘,
    ‘name03‘: ‘张翼德‘,
    ‘name04‘: ‘赵子龙‘,
    ‘name05‘: ‘马孟起‘
}
info[‘name05‘] = ‘黄汉升‘
print(info)
#输出结果:{‘name04‘: ‘赵子龙‘, ‘name02‘: ‘关云长‘, ‘name01‘: ‘刘玄德‘, ‘name03‘: ‘张翼德‘, ‘name05‘: ‘黄汉升‘}
#方法和添加一样,只要键值存在,则直接覆盖

删除

info = {
    ‘name01‘: ‘刘玄德‘,
    ‘name02‘: ‘关云长‘,
    ‘name03‘: ‘张翼德‘,
    ‘name04‘: ‘赵子龙‘,
    ‘name05‘: ‘马孟起‘
}
#删除方法有多种
#1.用pop删除,用到最多且最好的一种
info.pop(‘name01‘)

#2.del 内置的删除函数,和第一种效果一样
del info[‘name02‘]

#3.popitem,这个是在字典中随机删除一个元素
info.popitem()

print(info)
#输出结果:{‘name03‘: ‘张翼德‘, ‘name05‘: ‘马孟起‘}

查找

info = {
    ‘name01‘: ‘刘玄德‘,
    ‘name02‘: ‘关云长‘,
    ‘name03‘: ‘张翼德‘,
    ‘name04‘: ‘赵子龙‘,
    ‘name05‘: ‘马孟起‘
}
#in判断key是否存在
print(‘name01‘ in info)
#输出结果:True

#get获取key的值
print(info.get(‘name02‘))
#输出结果:关云长

#同上获取key的值
print(info[‘name02‘])
#输出结果:关云长
#这里要注意,用这种方法取值,如果key不存在程序会报错
print(info[‘name12‘])
#报错KeyError: ‘name102‘
#如果使用get则不会报错,会返回None

多级字典的相关操作

heros = {
    ‘魏国‘:{
        ‘曹操‘:[‘枭雄‘,‘对酒当歌人生几何‘],
        ‘司马懿‘:[‘谋略滔天‘]
    },
    ‘蜀国‘:{
        ‘刘备‘:[‘哭‘],
        ‘关羽‘:[‘义薄云天‘]
    },
    ‘吴国‘:{
        ‘孙权‘:[‘年少有为‘],
        ‘周瑜‘:[‘既生瑜何生亮‘]
    }
}
heros[‘魏国‘][‘曹操‘][0] += ‘,宁可我负天下人‘
print(heros[‘魏国‘][‘曹操‘])
#输出结果:[‘枭雄,宁可我负天下人‘, ‘对酒当歌人生几何‘]
#直接在元素中追加了内容

取所有键和值

info = {
    ‘name01‘: ‘刘玄德‘,
    ‘name02‘: ‘关云长‘,
    ‘name03‘: ‘张翼德‘,
    ‘name04‘: ‘赵子龙‘,
    ‘name05‘: ‘马孟起‘
}
#取所有键
print(info.keys())
#输出结果:dict_keys([‘name04‘, ‘name01‘, ‘name03‘, ‘name02‘, ‘name05‘])

#取所有值
print(info.values())
#输出结果:dict_values([‘赵子龙‘, ‘刘玄德‘, ‘张翼德‘, ‘关云长‘, ‘马孟起‘])

setdefault 函数

info = {
    ‘name01‘: ‘刘玄德‘,
    ‘name02‘: ‘关云长‘,
    ‘name03‘: ‘张翼德‘,
    ‘name04‘: ‘赵子龙‘,
    ‘name05‘: ‘马孟起‘
}
#字典中不存在key则添加元素,否则返回对应key的值
print(info.setdefault(‘name01‘,‘曹孟德‘))
#输出结果:刘玄德

print(info.setdefault(‘name06‘,‘曹孟德‘))
#输出结果:曹孟德

update 函数

info = {
    ‘name01‘: ‘刘玄德‘,
    ‘name02‘: ‘关云长‘,
    ‘name03‘: ‘张翼德‘,
    ‘name04‘: ‘赵子龙‘,
    ‘name05‘: ‘马孟起‘
}
info2 = {
    ‘name01‘:‘曹孟德‘,
    ‘name10‘:‘曹子孝‘
}
#对已有键值就更新,没有的键值则添加
info.update(info2)
print(info)
#输出结果:{‘name04‘: ‘赵子龙‘, ‘name05‘: ‘马孟起‘, ‘name03‘: ‘张翼德‘, ‘name01‘: ‘曹孟德‘, ‘name10‘: ‘曹子孝‘, ‘name02‘: ‘关云长‘}

items

info = {
    ‘name01‘: ‘刘玄德‘,
    ‘name02‘: ‘关云长‘,
    ‘name03‘: ‘张翼德‘,
    ‘name04‘: ‘赵子龙‘,
    ‘name05‘: ‘马孟起‘
}
print(info.items())
#输出结果:dict_items([(‘name01‘, ‘刘玄德‘), (‘name02‘, ‘关云长‘), (‘name04‘, ‘赵子龙‘), (‘name03‘, ‘张翼德‘), (‘name05‘, ‘马孟起‘)])
#字典转成元组

循环遍历字典dict

info = {
    ‘name01‘: ‘刘玄德‘,
    ‘name02‘: ‘关云长‘,
    ‘name03‘: ‘张翼德‘,
    ‘name04‘: ‘赵子龙‘,
    ‘name05‘: ‘马孟起‘
}
#方法一: 这个是最基本的循环,也是最建议使用的
for key in info:
    print(key,info[key])
#方法二:这个循环会把字典先转成列表,然后循环,性能和第一种方法差很多,如果数据量大区最好别用
for k,v in info.items():
    print(k,v)

#输出结果:
#name01 刘玄德
#name04 赵子龙
#name03 张翼德
#name05 马孟起
#name02 关云长

三、元组

元组其实跟列表差不多,也是存一组数,只是它一旦创建,便不能再修改,所以又叫只读列表

语法:

heros =(‘曹操‘,‘刘备‘,‘孙权‘)

它只有2个方法,一个是count,一个是index

原文地址:https://www.cnblogs.com/yidaoge/p/12243964.html

时间: 2024-09-28 16:12:04

Python学习,第五课 - 列表、字典、元组操作的相关文章

Python学习(五)列表的简单操作

#!/usr/bin/env python#_*_coding:utf8_*_ # 操作列表# for循环'''nbaStars = ['yaoming','kobe','manu',23,'the klaw']for nbaStar in nbaStars:    print(nbaStar)''' nbaStars = ['yaoming','kobe','manu',str(23),'the klaw'] # 这里有 int 对象,没有title方法的for nbaStar in nbaS

python学习笔记3:列表和元组

python学习笔记3:列表和元组 一.列表 list 总结:列表是可变变量,可以通过下标修改元素的值 1.定义列表 -- 中括号[ ] name=['Lily','Lucy','meimei'] 2.下标取值 --正负数均可 3.在列表中添加值 1)append() 方法,在列表末尾添加一个值 2)insert()方法,在列表指定位置添加一个值 3)extend()方法,把一个列表追加到一个列表的末尾            4.从列表中删除值 1)pop() 方法,默认删除最后一个元素,并且返

Python学习笔记&lt;二&gt;:列表、元组、字典

1 列表和元组 可以将列表和元组当成普通的"数组",它能保存任意数量任意类型的Python 对象.和数组一样,通过从0 开始的数字索引访问元素,但是列表和元组可以存储不同类型的对象. 列表和元组有几处重要的区别.列表元素用中括号( [ ])包裹,元素的个数及元素的值可以改变.元组元素用小括号(( ))包裹,不可以更改(尽管他们的内容可以).元组可以看成是只读的列表.通过切片运算( [ ] 和 [ : ] )可以得到子集,这一点与字符串的使用方法一样. 举例如下: >>>

Python学习笔记六:列表、元组、字典

学习其他语言很少关注数组是的结构是怎么回事,都是直接使用.Python定义了列表.元组.字典三种数据结构,是我们使用python的基础,因此有必要理解它们的含义,我想这个和python一切皆对象的思想有关.python的数据结构更加灵活. 1. 列表[lists] 序列是Python中最基本的数据结构.序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推. Python有6个序列的内置类型,但最常见的是列表和元组. 序列都可以进行的操作包括索引,切片,加

Python学习三---序列、列表、元组

一.序列 1.1.序列概念 pythn中最基本的数据结构是序列(sequence). 序列中每个元素被分配一个序号-元素索引,第一个索引是0,第二个是1,以此类推.类似JAVA中数组和集合中的下标. 从后向前,最后一个索引是-1,-2,.... python包含6种内建序列.最常用的两种类:列表和元组,其它内奸序列类型有字符串.Unicode字符串.buffer对象和xrange对象. 列表和元组的主要区别在于,列表可以修改,元组不能修改. 添加元素就用列表. 由于 一些原因不能修改时就用元组.

【python学习笔记】2.列表和元组

# 第二章:列表和元组 序列中,每个元素都有个一个序号,序号以0开始,最后一个元素序号为-1,倒数第二个-2 序列类型包括,列表,元组,字符串,unicode字符串,buffer, xrange 列表可以修改,元组不可以修改,元组可以作为字典的key,列表不可以 列表中的元素可以是各种类型,各元素通过逗号分隔,写在方括号中 >>> edward=["edward", 42] >>> print edward ['edward', 42] >&g

python学习小总结(列表、元组、字典、集合、字符串)

---恢复内容开始--- 一.列表(list) 1.添加 append():追加,在列表末尾添加元素. 列表名.append(添加的元素) extend():扩展,在列表末尾添加元素. 列表名.extend(添加的元素) (与apend的区别是在添加多个元素时,append是将添加的多个元素作为一个整体加进去,extend是整合成一个新的列表) insert():插入,在列表的任意索引处插入元素 列表名.insert(索引号,插入的元素) 2.删除 pop():弹出,移除指定位置的元素[通过索引

Python学习之路2 - 列表和元组

列表 概念:Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素. 列表的使用 names = ['zhangsan','lisi','wangwu','zhaoliu'] //定义一个了列表 print(names) //输出列表的所有内容 print(names[0]) //输出列表的第0个内容//用索引来访问list中每一个位置的元素,记得索引是从0开始的. 输出结果: 如果要取最后一个元素,除了计算索引位置外,还可以用-1做索引,直接获取

Python学习(五)——列表操作全透析

列表是以类的形式实现的. "创建"列表实际上是将一个类实例化. 因此,列表有多种方法能够操作. Python列表操作的函数和方法 列表操作包括下面函数: 1.cmp(list1, list2):比較两个列表的元素 2.len(list):列表元素个数 3.max(list):返回列表元素最大值 4.min(list):返回列表元素最小值 5.list(seq):将元组转换为列表 列表操作包括下面方法: 1.list.append(obj):在列表末尾加入新的对象 2.list.coun

Python学习笔记 (3) :列表、元组的操作

列表,即写在方括号之间.用逗号分隔开的数值列表.列表内的项目不必全是相同的类型. >>> a = ['spam', 'eggs', 100, 1234] >>> a ['spam', 'eggs', 100, 1234] >>> squares = [1, 4, 9, 16, 25] >>> squares [1, 4, 9, 16, 25] 像字符串一样,列表可以被索引和切片: <pre> >>> sq