文章首发于:欢迎大佬们前来逛逛
列表是最简单的数据类型,相当于数组。
以下是列表的常见操作:
l = [1, 2, 3, 4, 5]
# 往末尾添加一个元素
l.append(6)
l[len(l):] = [7]
l2 = [0]
# 所有元素添加到另一个列表中
l2.extend(l)
l2[len(l2):] = l
# 插入一个元素,插入到第一个参数的位置处
l.insert(0, 99)
l.insert(len(l), 999) # 相当于在末尾插入一个元素
# 移除第一个指定的元素
l.remove(99) # 没有的话会返回一个错误
# 删除指定位置的元素,并且这个元素可以被返回
i = l.pop() # 删除尾元素,并且弹出这个值
# 清除所有的元素
l.clear()
l = [1, 2, 5, 5, 5]
# 返回第一个值为val的索引
i = l.index(5)
# 返回val值出现的次数
cnt = l.count(5)
# 就地排序列表
l.sort()
# 就地翻转列表
l.reverse()
# 返回列表的一个浅拷贝,相当于 r = l[:]
r = l.copy()
print(l)
print('--------------------------'*2)
""" 堆栈的模拟 """
l = [1, 2, 3]
# 入栈
l.append(4)
l.append(5)
# 出栈
l.pop()
l.pop()
print(l)
""" 队列的模拟 """
# 双端队列
from collections import deque
queue = deque(["a", "b", "c"])
queue.append("d")
queue.append("e")
queue.popleft()
queue.popleft()
print(queue)
""" 列表推导式 """
# 普通的方法:从序列创建列表
seq = []
for i in range(10):
seq.append(i ** 2)
print(seq)
seq.clear()
# 列表推导式(1) 推荐!
seq = [x ** 2 for x in range(10)]
print(seq)
seq.clear()
# (2)
seq = list(map(lambda x: x ** 2, range(10)))
print(seq)
# 双重循环输出不重复的组合
print([(x, y) for x in [1, 2, 3] for y in [1, 2, 3] if x != y])
l = [-2, -1, 0, 1, 2]
l1 = [x ** 2 for x in l]
l2 = [abs(x) for x in l]
l3 = [x for x in l if x >= 0]
# print(l1)
# print(l2)
# print(l3)
l = [' wain ', ' agda ', 'Edward ']
# strip方法可以删除字符串头尾的空格
print([str.strip() for str in l])
ll = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# 二维列表转换为一维列表
print([x for item in ll for x in item])
from math import pi
# round保留小数
print([str(round(pi, i)) for i in range(1, 10)])
# 二维矩阵的转置 3X4 -> 4X3
l = [
[1,2,3,4],
[4,5,6,7],
[6,7,8,9]
]
print([[row[i] for row in l] for i in range(len(l[0]))])
# zip表示“压缩” 将多个对象中对应的元素打包成一个个元组,然后使用list转换为列表
# zip(*)表示“解压” 还原为多个对象的形式
print("-----------------------------------"*2)
l_zip = list(zip(*l))
print(l_zip)
# 解压,还原为三个对象列表
l1, l2, l3 = zip(*l_zip)
print(l1)
print(l2)
print(l3)
print('---------------------------'*2)
""" del语句 """
l = [1,2,3,4,5,6,7,8,9]
print(l)
# 列表的切片删除 左闭右开
del l[1:5]
print(l)
# 使用del来清空列表
del l[:]
print(l)
# 删除整个变量
del l
元组是python的一种标准序列类型。
一个元组由数个 逗号
与 值
组成:
t = 123,456,"woaini"
print(t)
u = t, (1,2,3,"66666")
print(u)
--------
(123, 456, 'woaini')
((123, 456, 'woaini'), (1, 2, 3, '66666'))
元组始终携带括号
元组是不可变的,因此不能给一个元组的某一个元素赋值。
元组和列表的区别:
注意:
创建一个空元组? 直接输入一个括号即可。
创建一个只含元素的元组? 需要输入 元素,
序列的拆封:
x, y = u
-------
(123, 456, 'woaini')
(1, 2, 3, '66666')
创建集合的方式:
{}
set()
basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
basket2 = set('aaabbbccdef')
print(basket)
print(basket2)
if 'apple' in basket:
print('yes!')
------------
{'orange', 'pear', 'banana', 'apple'}
{'b', 'd', 'f', 'c', 'a', 'e'}
yes!
注意到:
set()
创建集合,那么创建的是元素字符。集合推导式语法:
print({x for x in 'abcdefg' if x not in 'abcd'})
-----------
{'f', 'e', 'g'}
字典由 关键字
和 值
组成。
由于关键字需要是索引,因此关键字必须是 **不可变类型。**通常为字符串或者数值,不能用列表做关键字。
字典的创建形式: {关键字: 值}
中间使用:分割
# 创建字典
dic = {'k1':123, 'k2':234, 'k3':456}
print(dic)
# 修改字典值
dic['k2'] = 999
print(dic)
# 删除字典键值对
del dic['k2']
print(dic)
-----------
{'k1': 123, 'k2': 234, 'k3': 456}
{'k1': 123, 'k2': 999, 'k3': 456}
{'k1': 123, 'k3': 456}
字典的关键字可以组成列表:
list
形成列表, sorted
对列表排序
# 返回所有关键字组成的列表
print(list(dic.keys()))
print(sorted(list(dic.keys())))
for key in dic:
print(dic[key], end=' ')
--------
['k1', 'k3', 'k2']
['k1', 'k2', 'k3']
123 456 666
使用 dict
直接创建字典:
dict中形成字典的大括号既可以使用 {}
也可以使用 []
,但是键值对必须是 ()
dic = dict({('sape', 4139), ('guido', 4127), ('jack', 4098)})
使用字典推导式创建字典:
dic = {x:x**2 for x in range(10)}
dict
创建关键字都是字符串类型的字典:
dic = dict(a=123,b=456,d=789)
在字典中,使用 items()
函数来遍历键值对:
for (k,v) in dic.items():
print(k,v)
--------------
a 123
b 456
d 789
在列表中,使用 enumerate
获得索引值和数值:
l = [1,2,3,4,5]
# 获取索引和值
for i,v in enumerate(l):
print(i,v)
----------
0 1
1 2
2 3
3 4
4 5
使用 zip
打包需要同时循环的列表:
questions = ['name', 'quest', 'favorite color']
answers = ['lancelot', 'the holy grail', 'blue']
for q,a in zip(questions,answers):
print("What is your {0}: {1}".format(q,a))
--------------
What is your name: lancelot
What is your quest: the holy grail
What is your favorite color: blue
reversed
逆向打印:
for num in reversed(range(1,10)):
print(num,end=' ')
去重
后 排序
输出:首先转换为集合,然后再sorted:
basket = ['apple', 'orange', 'apple', 'pear', 'orange', 'banana']
for str in sorted(set(basket)):
print(str,end=' ')
------------
apple banana orange pear