Python
允许重复、有序、有下标
列表
代码示例:
foo = ['a', 1, 3.0, True]
print(foo[0]) # 索引(获取指定下标的元素)
print(foo[:])
print(foo[::-2])
增删改查
方法 | 注释 |
---|---|
append | 往指定列表里追加指定元素 |
extend | 往指定列表里拼接指定元素 |
pop | 向指定列表里删除单个指定的下标对应的元素(如果不指定下标,默认删除下标为-1的元素) |
remove | 向指定列表里删除单个指定的元素 |
del | 删除变量的引用(删除的是指针而不是内存块) |
clear | 清空列表里的元素 |
insert | 将指定元素插入指定列表元素的位置(元素占了对应的位置,原来的元素及其后面的元素只能向后移) |
in | 判断元素是否存在可迭代对象中(返回值:bool) |
index | 返回指定的元素对应下标(没有找到指定元素则报错) |
count | 统计指定元素出现的次数 |
代码示例:
foo = ['foo']
bar = ['bar']
foo.append(1024,bar) # ['foo',1024,['bar']]
foo.extend(1024,bar) # ['foo',1024,'bar']
foo = ['foo','bar',1024] # 底层:li[0],li[1],li[2]
foo.pop(1) # ['foo',1024]
foo.remove('bar') # ['foo',1024]
del foo[2] # ['foo','bar']
bar = foo # 相当于引用了foo指向的内存地址
del foo # 删除了foo的引用,但是内存地址还在
print(bar) # ['foo','bar',1024]
foo.clear() # []
# 循环删除多个元素:
n = 0 # 下标
foo = [1,2,3,1,1,2]
while n < len(foo):
if foo[n] == 1:
foo.remove(1) # 控制下标变化
else:
n += 1
for i in foo:
if i == 1:
foo.remove(i) # 删除元素时候下标是会变化的
foo = [1,2,3]
foo.insert(2,1024) # [1,1024,2,3]
# 替换元素:
foo[1] = 1024 # [1,1024,3]
foo = ['foo','bar','bar']
if 'foo' in foo:
print('存在')
foo.index('bar',1,-1) # 2(从下标为1的元素开始找,到下标为-1的元素结束)
foo.count('bar') # 2
排序与翻转
- sort
- 对指定列表进行排序(默认False:升序,True:降序)
- reverse
- 单纯的翻转,不排序
代码示例:
foo = [1,3,2]
foo.sort() # [1,2,3]
foo.sort(reverse = True) # [3,2,1]
foo.reverse() # [2,3,1]
# 冒泡排序
foo = [5,1,7,6,8,2,4,3]
for i in range(0,len(foo) - 1): # 元素个数-1防止超出索引范围()
for j in range(0,len(foo) - 1 - i): # 忽略已经排序好的尾数元素
if foo[j] > foo[j + 1]:
foo[j],foo[j + 1] = foo[j + 1],foo[j]
else:
print(foo) # [1, 2, 3, 4, 5, 6, 7, 8]
列表推导式
代码示例:
# 格式01:
foo = [i + 2 for i in range(1,10)]
print(foo) # [3, 4, 5, 6, 7, 8, 9, 10, 11]
j = 1
foo = [j + 2 for i in range(1,10)]
print(foo) # [3, 3, 3, 3, 3, 3, 3, 3, 3]
# 格式02:
foo = [i for i in range(1,10) if i % 2 == 0]
print(foo) # [2, 4, 6, 8]
# 格式03:
bar = ['ab','cd','ef']
foo = [i.title() if i.startswith('c') else i.upper() for i in bar] # 如果条件为真就首字母大写,否则全部大写
print(foo) # ['AB', 'Cd', 'EF']
# 变种(嵌套):
foo = [(x,y) for x in range(3) for y in range(3)]
print(foo) # [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]