我正在学习python并完成他们的教程。我理解列表理解和嵌套列表的理解。但是,使用以下代码,我试图了解事件的顺序。
>>> matrix = [
...[1, 2, 3, 4],
...[5, 6, 7, 8],
...[9, 10, 11, 12],
... ]
>>> [[row[i] for row in matrix] for i in range(4)]
[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4,8,12]]
根据嵌套列表理解,第一个“i”和第二个“i”是同一个变量,它们是否同时增加?我想我不明白最终的大名单如何从第一个子列表[1,5,9]到第二个子列表[2,6,10]
答案 0 :(得分:1)
[[row[i] for row in matrix] for i in range(4)]
相当于
my_list = []
for i in range(4):
my_list_2 = []
for row in matrix:
my_list_2.append(row[i])
my_list.append(my_list_2)
是第一个" i"第二个"我"相同的变量,它们是否同时增加?
当然,确实如此。如果它不是i
,则代码会抛出错误,因为两者中的一个不会被定义。
您可能对此问题感兴趣:Understanding nested list comprehension
答案 1 :(得分:0)
我做了一个函数来自动执行它(例如,很抱歉,我是从某人那里获得的):
比方说,你有这个例子:
# 2-D List
matrix = [[1, 2, 3], [4, 5], [6, 7, 8, 9]]
flatten_matrix = []
for sublist in matrix:
for val in sublist:
flatten_matrix.append(val)
这是我的职能: (首先,将示例转换为要发送给函数的字符串)
x = "for sublist in matrix:for val in sublist:flatten_matrix.append(val)"
然后该功能:
def ComprenhensionizeList(nested_for_loop_str):
splitted_fors = nested_for_loop_str.split(':')
lowest_val = splitted_fors[1].split(' ')[1]
comprehensionizer = '[ '+ lowest_val+' '+splitted_fors[0]+' '+splitted_fors[1]+' ]'
print(comprehensionizer)
和输出:
[ val for sublist in matrix for val in sublist ]