# 下面的列表推导式将交换其行和列 [[row[i] for row in matrix] for i in range(4)]
[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]
1
[row[i] for row in matrix for i in range(4)]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
1
[row[i] for i in range(4) for row in matrix]
[1, 5, 9, 2, 6, 10, 3, 7, 11, 4, 8, 12]
1
[[row[i] for i in range(4)] for row in matrix]
[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]
5.2 del语句
1
a = [1,2,3]
1
del a[0]
1
a
[2, 3]
1
del a[:]
1
a
[]
1
del a
1
a
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-49-3f786850e387> in <module>
----> 1 a
NameError: name 'a' is not defined
5.3 元组和序列
元组可以嵌套
元组创建后不可修改(元组中的列表可以修改)
元组可以包含多个对象
输入时圆括号可有可无,不过经常会是必须的(如果这个元组是一个更大的表达式的一部分)
给元组中的一个单独的元素赋值是不允许的,当然你可以创建包含可变对象的元组,例如列表。
1
t = (1,2,3),[1,2,3]
1
t[1][0] = 0
1
t
((1, 2, 3), [0, 2, 3])
1
t[0][0] = 0
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-57-7426bf581dcb> in <module>
----> 1 t[0][0] = 0
TypeError: 'tuple' object does not support item assignment
# 当同时在两个或更多序列中循环时,可以用zip() 函数将其内元素一一匹配。 questions = ['name', 'quest', 'favorite color'] answers = ['lancelot', 'the holy grail', 'blue'] for q, a in zip(questions, answers): print('What is your {0}? Itis {1}.'.format(q, a))
What is your name? Itis lancelot.
What is your quest? Itis the holy grail.
What is your favorite color? Itis blue.
1 2 3
# 如果要逆向循环一个序列,可以先正向定位序列,然后调用reversed() 函数 for i in reversed(range(1, 10, 2)): print(i)
9
7
5
3
1
1 2 3 4
# 如果要按某个指定顺序循环一个序列,可以用sorted() 函数,它可以在不改动原序列的基础上返回一个新的排好序的序列 basket = ['apple', 'orange', 'apple', 'pear', 'orange', 'banana'] for f in sorted(set(basket)): print(f)
apple
banana
orange
pear
1 2 3 4 5 6 7 8
# 有时可能会想在循环时修改列表内容,一般来说改为创建一个新列表是比较简单且安全的 import math raw_data = [56.2, float('NaN'), 51.7, 55.3, 52.5, float('NaN'), 47.8] filtered_data = [] for value in raw_data: ifnot math.isnan(value): filtered_data.append(value) print(filtered_data)