一、列表
1.列表介绍
列表,数据类型为list,可以存储多个不同种类的元素,其中,字符串元素需要加引号,且元素间要用逗号隔开。
在Python中,可以直接使用方括号创建,例如:
list_mix=['a',2,'c',4.5,'end']
#也可以是双引号
2.列表读取
在列表出生的时候,里面的每个元素就有都了对应的编号:
a | 2 | c | 4.5 | end |
---|---|---|---|---|
list_mix[0] | list_mix[1] | list_mix[2] | list_mix[3] | list_mix[4] |
list_mix[-5] | list_mix[-4] | list_mix[-3] | list_mix[-2] | list_name[-1] |
后文中将这个编号称为“下标”
读取单个元素
如果需要打印单一元素,例如c,就可以通过
list_mix=['a',2,'c',4.5,'end']
print(list_mix[2])
或者
list_mix=['a',2,'c',4.5,'end']
print(list_mix[-3])
的方式来实现。
读取列表的一部分
切片
切片相当于把列表中的一部分元素切出来,格式为list_mix[n: m :k],n为起始位置,m为结束位置,k为步长值。这种表达中,n默认为0,m默认为列表元素的个数,k默认为1。n、m、k想要保持默认时可以省略。
list_mix=['a',2,'c',4.5,'end']
print(list_mix[0:])
print(list_mix[:])
print(list_mix[::])
print(list_mix)
#这四中表达的输出结果是相同的
#结果均为['a', 2, 'c', 4.5, 'end']
print(list_mix[0::2])
print(list_mix[0:5:2])
#输出的结果相同
#结果均为['a', 'c', 'end']
print(list_mix[0:2])
print(list_mix[0:2:1])
#输出结果相同
#结果均为['a', 2]
#中括号内不可以为空
#list_mix[m]所代表的元素无法取到
复制列表
①用切片的方法进行列表复制:
list_mix=['a',2,'c',4.5,'end']
b=list_mix[:]
这种方式可以将当前的list_mix列表复制给b,尽管和list_mix有着相同的元素和排列方式,b却是一个单独的列表。此后对list_mix列表进行操作,不会再影响b列表。
②用赋值的方法进行列表复制:
list_mix=['a',2,'c',4.5,'end']
b=list_mix
这种方法是将list_mix的地址传递给b,b并不是新的列表。好比b和list_mix是两把一样的钥匙,计算机可以通过任何一把打开列表,此后再对列表进行操作时,无论通过b还是list_mix打开列表,结果也是一样的。
3.列表的修改
①增添元素
在末尾增加一个元素:append()
list_mix=['a',2,'c',4.5,'end']
list_mix.append('app')
print(list_mix)
#结果为:['a', 2, 'c', 4.5, 'end', 'app']
在指定位置增加一个元素:insert( )
使用insert()函数需要指明想要添加的位置和想要添加的内容
list_mix=['a',2,'c',4.5,'end']
list_mix.insert(3,'add')
#insert()函数里的3表示list_mix列表里的第三个元素
#因此这里是在c后面添加add
print(list_mix)
#结果为['a', 2, 'c','add', 4.5, 'end']
②删除元素
删除末尾元素:pop()
pop()的返回值是末尾元素值,因此可以保存被删除的元素
list_mix=['a',2,'c',4.5,'end']
deleted=list_mix.pop()
print(list_mix,deleted,deleted)
#输出的结果为['a', 2, 'c', 4.5] end
此外,pop()还可以删除掉指定下标的元素:
list_mix=['a',2,'c',4.5,'end']
list_mix.pop(2)
#删除list_mix列表中下表为2的元素:c
print(list_mix,deleted)
#输出的结果为['a', 2, 4.5, 'end']
删除指定下标的元素:del
list_mix=['a',2,'c',4.5,'end']
del list_mix[2]
#删除list_mix列表中下表为2的元素:c
print(list_mix)
#输出结果为['a', 2, 4.5, 'end']
删除只知道内容,不知道下标的元素:remove()
list_mix=['a',2,'c',4.5,'end']
list_mix.insert(3,'c')
print(list_mix)
list_mix.remove('c')
print(list_mix)
#输出结果为['a', 2, 'c', 'c', 4.5, 'end']
# ['a', 2, 'c', 4.5, 'end']
从以上结果中可以看出,remove()只能删除第一个遇到的“c”,如果列表里有多个“c”,无法一次性通过remove()全部删除。
4.其他常用操作列表的函数
生成数字列表:list(),range(n,m,k)
这里n、m、k的含义与列表切片中的相同,表达方式也有一些近似。但需要注意的是range(,m,k)、range(n,k)、range(n,)这三种表达是错误的。
figure=list(range(10))
print(figure)
#结果为[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
#生成的数字列表中最大的元素一定小于m
figure=list(range(10,))
print(figure)
#结果为[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
figure=list(range(2,10,2))
print(figure)
#结果为[2, 4, 6, 8]
figure=list(range(2,10))
print(figure)
#结果为[2, 3, 4, 5, 6, 7, 8, 9]
列表排序
①临时排序:sorted( )
sorted()函数只能暂时改变列表的顺序,执行完后,原来的列表顺序不变。
word=['zhang','chen','wang','chu']
print(sorted(word))
rank=sorted(word)
print(rank)
print(word)
#结果为:['chen', 'chu', 'wang', 'zhang']
# ['chen', 'chu', 'wang', 'zhang']
# ['zhang', 'chen', 'wang', 'chu']
②永久排序:sort()
sort()函数执行完后,原来列表的顺序发生永久性改变
word=['zhang','chen','wang','chu']
word.sort()
print(word)
#结果为:['chen', 'chu', 'wang', 'zhang']
③倒序排序:reverse( )
reverse( )函数可以将原列表改为倒序,这一改动也是永久性的。
word=['zhang','chen','wang','chu']
word.reverse()
print(word)
#结果为:['chu', 'wang', 'chen', 'zhang']
④列表求长:len()
word=['zhang','chen','wang','chu']
print(len(word))
#结果为:4
二、字典
1.字典的介绍
和列表一样,字典也是python中一种复杂的数据类型(dict)。这种数据类型有以下特点:
- 字典可以嵌套使用
- 字典中的元素成对出现,体现为键 (key)和值 (value)
- 键与值之间用冒号 :分隔,每个键值对之间用逗号 ,分隔
- 一个字典中每个键只能出现一次,而值可以重复出现
- 键只能使用英文的字符或字符串表示
字典可以用花括弧{}创建,例如:
fc1={'a':90,'b':80,'c':60,'a':60}
fc2={'a':90,'b':80,'c':60}
print(fc1)
print(fc2)
#结果为{'a': 60, 'b': 80, 'c': 60}
{'a': 90, 'b': 80, 'c': 60}
由以上结果可以看出,如果字典的键出现重复,计算机会记录第一次出现键的位置和第二次出现键的对应值。
2.字典的读取
①字典的遍历
一般有两种方法可以打印字典的全部内容,即
fc={'a':90,'b':80,'c':60}
print(fc)
又或者
print(fc.items())
#这两种方式输出的结果均为:{'a': 90, 'b': 80, 'c': 60}
②遍历键
想要遍历字典键可以使用key()函数,代码示例如下:
fc={'a':90,'b':80,'c':60,}
print(fc.keys())
#结果为:dict_keys(['a', 'b', 'c'])
③遍历值
想要遍历字典值可以使用value()函数,代码示例如下:
fc={'a':90,'b':80,'c':60}
print(fc.values())
#结果为:dict_values([90, 80, 60])
④字典取值
字典取值有两种方式,都需要依赖字典的键。
方法一
在字典变量后面加入“ [‘key’] ”以取得字典的值,示例如下
fc={'a':90,'b':80,'c':60,}
print(fc['a'])
#结果为:90
这种方法有一个缺点,如果输入的键不存在,那么代码运行时计算机会报错;
方法二
使用get()函数取值
当输入的键不存在时,返回为None
fc={'a':90,'b':80,'c':60}
print(fc.get('a'))
print(fc.get('d'))
#结果为:90
# None
需要注意的是,get()函数可以传递两个参数。当写入是两个参数时,如果第一个参数为字典中的键,则无论第二个参数是什么,都只返回第一个键对应的值,示例如下:
fc={'a':90,'b':80,'c':60}
print(fc.get('a','b'),fc.get('a','a'),fc.get('a','d'))
#结果为:90 90 90
相似情况下,如果第一个参数不是字典中的键,get()函数将返回第二个值。但需要注意的是,这并不代表get()函数给字典加入了新的元素。示例如下:
fc={'a':90,'b':80,'c':60}
print(fc.get('d',100),fc)
#结果为:100 {'a': 90, 'b': 80, 'c': 60}
3.字典的元素增减
新增
字典元素的新增可以直接通过给出新增键并对其赋值完成,示例如下:
fc={'a':90,'b':80,'c':60}
fc['d']=100
print(fc)
#结果为:{'a': 90, 'b': 80, 'c': 60, 'd': 100}
需要注意的是,如果这里的键字典里已经存在,则执行更改对应值的操作,这是字典的普适逻辑。示例如下:
fc={'a':90,'b':80,'c':60}
fc['b']=100
print(fc)
#结果为:{'a': 90, 'b': 100, 'c': 60, 'd': 100}
可以通过这样的方式来修改字典值。
此外,还可以通过update()函数批量增加字典元素,示例如下:
fc={'a':90,'b':80,'c':60}
fc.update(d=90,f='zero')
print(fc)
#结果为:{'a': 90, 'b': 80, 'c': 60, 'd': 90, 'f': 'zero'}
使用update()函数时,也可以进行批量修改,或者新增和修改同时进行:
fc={'a':90,'b':80,'c':60}
fc.update(a=95,b='85')
print(fc)
fc.update(d=90,f='zero')
print(fc)
fc.update(a=90,e='61')
print(fc)
#结果为:{'a': 95, 'b': '85', 'c': 60}
# {'a': 95, 'b': '85', 'c': 60, 'd': 90, 'f': 'zero'}
# {'a': 90, 'b': '85', 'c': 60, 'd': 90, 'f': 'zero', 'e': '61'}
删除
- 使用 pop() 函数删除,向pop()传递要删除的键,就可以将制定的元素删除。pop()函数有返回值,返回为被删除的值,示例如下:
fc={'a':90,'b':80,'c':60}
print(fc.pop('a'),fc)
#结果为:90 {'b': 80, 'c': 60}
- 可以用del进行删除,但需要注意使用del的格式,示例如下:
fc={'a':90,'b':80,'c':60}
del fc['a']
print(fc)
#结果为:{'b': 80, 'c': 60}
- popitem()函数,该函数可以删除字典的最后一个元素,其返回值类型为 tuple,值为被删除的元素,示例如下:
fc={'a':90,'b':80,'c':60}
kv=fc.popitem()
print(kv,type(kv),fc)
#结果为:('c', 60) <class 'tuple'> {'a': 90, 'b': 80}
- clear()函数:清空字典。示例如下:
fc={'a':90,'b':80,'c':60}
fc.clear()
print(fc)
#结果为:{}