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

排序与翻转

  1. sort
    • 对指定列表进行排序(默认False:升序,True:降序)
  2. 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)]