python 高级特性

切片


l = list(range(100))

l1 = l[0:3]  # 取前三个数
# print(l1)  # [0, 1, 2]

l2 = l[:3]  # 如果第一个索引是 0 ,还可以这么取前三个数
# print(l2)  # [0, 1, 2]

l3 = l[2:5]  # 从索引 2 开始取值取 (5-2=3) 个元素出来
# print(l3)  # [2, 3, 4]

l4 = l[-10:]  # 取后十个数
# print(l4)  # [90, 91, 92, 93, 94, 95, 96, 97, 98, 99]

l5 = l[:10:2]  # 取前 10 个数,每隔 2 个取一个数
# print(l5)  # [0, 2, 4, 6, 8]

l6 = l[::10]  # 所有的数,每隔 10 个取一个数
# print(l6)  # [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]

l7 = l[:]  # 什么都不写,则原样复制一个 list
# print(l7)  # [0, 1, 2, 3, ……, 97, 98, 99]

迭代

如果给定一个 list 或 tuple,我们可以通过 for 循环来遍历这个 list 或 tuple ,这种遍历我们称为迭代(Iteration)。只要作用于一个可迭代对象,for 循环就可以正常运行。


d = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}

# 只迭代 key 时
for key in d:
    print(key)  # a b c d e 


# 只迭代 value 时
for value in d.values():
    print(value)  # 1 2 3 4 5

# 同时迭代 key 和 value 时
for k,v in d.items():
    print(f'the key is {k} and the value is {v}')

# output    
# the key is a and the value is 1
# the key is b and the value is 2
# the key is c and the value is 3
# the key is d and the value is 4
# the key is e and the value is 5


# 如果是 list 的话,需要同时迭代索引和元素本身时

l = ['a', 'b', 'c', 'd']

for i, value in enumerate(l):
    print(i, value)

# output
# 0 a
# 1 b
# 2 c
# 3 d

如何判断一个对象是否为可迭代的对象?


from collections.abc import Iterable

a = isinstance([], Iterable)  # True
b = isinstance({}, Iterable)  # True
c = isinstance('abc', Iterable)  # True
d = isinstance((x for x in range(10)), Iterable)  # True
e = isinstance(50, Iterable)  # False

列表生成式 (支持:列表、元组、集合、字典)

是 Python 内置的非常简单却强大的可以用来创建 list 的生成式


l = [x * x for x in range(1, 11)]
print(l)  # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

# 生成全排列
l1 = [m + n for m in 'ABC' for n in 'XYZ']
print(l1)  # ['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']

# for 后面的 if 是过滤条件,不能加 else
l = [x for x in range(1, 11) if x % 2 == 0]
print(l)  # [2, 4, 6, 8, 10]

# for 前面的 if else 是表达式,必须要加 else
l1 = [x if x % 2 == 0 else -x for x in range(1, 11)]
print(l1)  # [-1, 2, -3, 4, -5, 6, -7, 8, -9, 10]

results matching ""

    No results matching ""