Python【系列教程】之list(列表),tuple(元组),dict(字典)

一、列表和元组的通用用法

(1)

# 定义list
myList = ["a", 20, "python"]
print(myList)
# 定义元组
myTuple = ('a', 20, 'python')
print(myTuple)
# list,元组和 str的用法类似
print(myList[0])
print(myList[-1])

print(myTuple[0])
print(myTuple[-1])
a_tuple = ('crazyit ', 20, 1.2)
b_tuple = (127, 'crazyit', 'fkit', 3.33)
print(a_tuple)
print(b_tuple)
# 两个元组相加
result = a_tuple + b_tuple
print(result)
# 两个list相加
print(['a', 'b'] + ['c', 'd'])
# 将a_tuple元组乘3
print(a_tuple * 3)
# 将myList 乘3
print(myList * 3)
# in的用法和str的用法类似
print('x' in myList)

print(len(myList))
print(max(myList))
print(min(myList))

(2)序列封包和序列解包

python还提供了序列封包( Sequ nce Packing )和序列解包( Sequence Unpacking )的功能 ,简单来说 Python 允许支持 以下两种赋值方式。

1.程序把多个值赋给一个变量时, Python 会自动将多个值封装成元组。这种功能被称为序列 封包

2.程序允许将序列(元组或列表等)直接赋值给多个变量,此时序列的各元素会被依次赋值 给每个变量(要求序列的元素个数和变 个数相等)。这种功能被称为序列解包。

# 序列封包
vals = 10, 20, 30
print(vals, "vals的数据类型是:", type(vals))
print(vals[1])
a_tuple = tuple(range(1, 10, 2))
# 序列解包,
a, b, c, d, e = a_tuple
print(a, b, c, d, e)
a_list = ['kit', 'yit']
a_str, b_str = a_list
# first second 保存前两个元素, rest 列表包含剩下的元素
first, second, *rest = range(10)
print(first)
print(second)
print(rest)
# last 保存最后一个元素, begin 保存前面剩下的元素
*begin, last = range(10)
print(begin)  # [0 , 1 , 2, 3 , 4, 5 , 6, 7 , 8]
print(last)  # 9
# first 保存第一个元素, last 保存最后一个元素, middle保存中间剩下的元素
first, *middle, last = range(10)
print(first)  # 0
print(middle)  # [0 , 1 , 2 , 3 , 4 , 5 , 6 , 7, 8]
print(last)  # 9

 

二、使用列表

列表与元组最大的区别在于:元组是不可改变的,列表是可改变的 。元组支持的操作,列表基本上都支持 ;列表支持对元素的修改,而元主且则不支持。从这个角度来看,可以认为列表是增强版的元组。

虽然大部分时候都 使用列表来代替元组,但如果程序不需要修改列表所包含的 元素 ,那么使用元组代替列表会更安全。

a_tuple = ('cazy', 20, -1.2)
#将元组转换成列表
a_list = list(a_tuple)
print(a_list)
#使用range()函数创建区间range对象
a_range = range(1,5)
print(a_range)
#将区间转换成列表
b_list = list(a_range)
print(b_list)
#创建区间指定步长
c_list = list(range(4,20,3))
print(c_list)

与list()对应的是, Python 也提供了一个 tuple () 函数,该 函数可用于 将列表、区间 range 等 对象转换为元组。

如下代码:

# 将列表转换成元组
a_tuple = tuple(a_list)
print(a_tuple)
# 将区间转换成元组
b_tuple = tuple(range(1, 5))
print(b_tuple)
# 创建区间时还指定了步长
c_tuple = tuple(range(4, 20, 3))
print(c_tuple)
# list追加元素
a_list = ['d', 'z']
a_list.append(50)
print(a_list)
a_list.append(('asdqw', 'qweqwe'))
a_list.append(['sad', 'asd'])
print(a_list)
"""append ()方法既可接收单个值,也可接收元组、列表等 ,但该方法只是把元组、列表当成单个
元素 这样就会形成在列表中嵌套列表、嵌套元组的情形"""
"""如果希望不将被追加的列表当成 个整体,而只是追加列表
中的元素 ,则可使用列表的 exte nd()方法。"""
a_list.extend(['1', '2', '3', '4', '5', '6'])
print(a_list)
a_list.extend(range(97, 100))
print(a_list)
"""如果希望在列表中间增加元素,则可使用列表的 insert()方法,使用 insert()方法时要指
定将元素插入列表的哪个位置。"""

"""删除列表元素使用del语句。del语句是python的一种语句,专门用于执行删除操作,不仅可
用于删除列表的元素,也可用于删除变量等"""
"""使用 del 语句既可删除列表中的单个元素,也可直接删除列表的中间一段。例如如下代码。"""
a_list = ['crazy', 20, -2.4, (3, 4), 'kit']
# 删除第三个元素
del a_list[2]
print(a_list)
# 删除第二个到第四个元素
del a_list[1:3]
print(a_list)
# 删除第3个到倒数第2个(不包含)元素,间隔为2
del a_list[2:-2:2]
print(a_list)

# 删除 name 变量
name = 'crazy'
print(name)
del name
# list的remove函数,移除第一个匹配到的元素,如果没有匹配到则报 ValueError
test_list = [1, 2, 3]
test_list.remove(1)
# 该方法用于清空列表的所有元素
test_list.clear()

# 修改列表元素
a_list = [2, 4, -3.4, 'crazy', 23]
a_list[2] = 5
print(a_list)
a_list[-2] = 'kll'
print(a_list)

b_list = list(range(1, 5))
# 将第2个到第4个(不包含)元素赋值为新列表的元素
b_list[1:3] = ['a', 'b']
print(b_list)
#将第3个到第3个(不包含)元素赋值为新列表的元素 就是插入元素
b_list[2:2] = ['x', 'y']
print(b_list)
#将第3个到第6个(不包含)元素赋值为空列表,就是删除元素
b_list[2:5] = []
print(b_list)
b_list[1:3] = 'charlie'
print(b_list)

c_list = list(range(1,10))
c_list[2:9:2] = ['a','b','c','d']
print(c_list)

#count():用于统计列表中某个元素出现的次数。
print(c_list.count('a'))
#index() :用 于判断某个元素在列表中出现的位置
print(c_list.index('a'))
#pop():用于将列表当成“栈”使用实现元素出栈功能
c_list.append('last')
print(c_list.pop())
#reverse ():用于将列表中的元素反向存放
print(c_list.reverse())
#用于对列表元素排序。使用 len函数按照元素的长度排序,并且反序
print(c_list.sort(key=len,reverse=True))

 

三、使用字典

(1)字典的入门及创建字典

# 使用字典
scores = {'语文': 89, '数学': 92, '英文': 93}
# 空字典
empty_dict = {}
# 使用元组作为dict的key
dict2 = {(20, 30): 'good', 30: 'bad'}

需要指出的是,元组可以作为 diet的 key ,但列表不能作为元组的 key 这是由于 diet 要求 key 必须是不可变类型,但列表是可变类型,因此列表不能作为元组的 key

# 在使用 diet()函数创建字典时 可以传入多个列表或元组参数作为 key-value 每个列表或元组将被当成一个 key-value 对
# 因此这些列表或者元组都只能包含两个元素
vegtables = [('celery', 1.58), ('brocoli', 1.29), ('lettuce', 2.19)]
dict3 = dict(vegtables)
print(dict3)

vegtables1 = [['celery', 1.58], ['brocoli', 1.29], ['lettuce', 2.19]]
dict4 = dict(vegtables1)
print(dict4)
# 空字典
dict5 = dict()
# 通过关键字的形式创建字典
dict(spinach=1.39, cabb=2.59) #{ ’ spinach ’: 1. 39,’eabbage ' : 2 . 5 9}

(2)字典的基本用法

scores = {'语文':89}
#通过 key访问value
print(scores['语文'])
print(scores.get('语文'))

#对不存在的 key 赋值,就是增加 key value
scores['数学'] = 90
print(scores) #{'语文': 89, '数学': 90}

#删除 key value
del  scores['语文']
del  scores['数学']

#修改dict
scores['语文'] = 50
print(scores)

#判断dict是否包含指定的key
print('语文' in scores)
print('语文' not  in scores)

字典的 key 是它的关键。换个角度来看,字典的 key就相当于它的索 引,只不过这些索引不一定是整数类型,字典的 key 可以是任意不可变类型。字典相当于索引是任意不可变类型的列表:而列表则相当于 key 只能是整数的字 典。因此 ,如果程序中要使用的字典的 key 是整数类型, 则可考虑能否换成列表。

(3) 字典的常用方法

dir(dict)

cars = {'bmw':9,'bens':8.3}

#清空字典

cars.clear()

cars.get('bmw')

#更新字典

cars.update()

#用于获取字典的kv键值对

cars.items()

#获取字典的所有key

cars.keys()

#获取字典的所有的value

cars.values()

#弹出并删除指定的kv

cars.pop('bmw')

#随机弹出一个kv键值对

cars.popitem()

# setdefault()设置默认的kv,并返回v

# fromKeys() 函数使用给定的多个key创建字典,这些key对应的value默认都是None,也可以额外传入一个参数作为默认的value,该方法一般不会使用字典对象调用。通常会使用dict类直接调用。

#在 字符串模版中使用key

temp = ' 书名是:% {name}s, 价格是: %{price}010.2f, 出版社是:%{publish}s'

book  = {’ name’:疯狂Python讲义, ’price’: 88. 9,  ’ publish ’: '电子社’}

#使用字典为字符串模版中的key传入值

print(temp % book)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章