用于浏览(没有索引变量)GNU Octave / Matlab 中元胞数组元素的 for 循环
A for loop to browse (without an index variable) the elements of a cell array in GNU Octave / Matlab
给定一个元胞数组,比如 c = {'first', 'second', 'third'}
,如何在不使用索引的情况下在 for
循环中浏览它?
这可以用于数组,因此对于 c = [1, 2, 3]
,这将有效:
for k = c
... # use k here as an element of c
endfor
元胞数组的等效、优雅的方法是什么? (请注意,元胞数组并不总是可以转换为数组。)
更新:它实际上可以正常工作(即,当 c
是元胞数组时),但前提是值存储在一行中;存储在列中时它将不起作用,例如 c = {'first'; 'second'; 'third'}
.
这里有几个选项:
如果 c
的单个元素可转换为数组,则可以使用索引作为循环变量:
for k = 1:numel(c)
disp(c{k});
end
first
second
third
此选项最接近 cellfun
的做法。 (cellfun
是完全替换 for
循环的另一种选择。)
如果元素不可转换为数组(或者您只是想以不同的方式进行),您可以使用 c
作为循环索引并获取循环内的内容:
for k = c
disp(k{});
end
first
second
third
这是对您在示例中所做的最直接的翻译。
给定一个元胞数组,比如 c = {'first', 'second', 'third'}
,如何在不使用索引的情况下在 for
循环中浏览它?
这可以用于数组,因此对于 c = [1, 2, 3]
,这将有效:
for k = c
... # use k here as an element of c
endfor
元胞数组的等效、优雅的方法是什么? (请注意,元胞数组并不总是可以转换为数组。)
更新:它实际上可以正常工作(即,当 c
是元胞数组时),但前提是值存储在一行中;存储在列中时它将不起作用,例如 c = {'first'; 'second'; 'third'}
.
这里有几个选项:
如果 c
的单个元素可转换为数组,则可以使用索引作为循环变量:
for k = 1:numel(c)
disp(c{k});
end
first
second
third
此选项最接近 cellfun
的做法。 (cellfun
是完全替换 for
循环的另一种选择。)
如果元素不可转换为数组(或者您只是想以不同的方式进行),您可以使用 c
作为循环索引并获取循环内的内容:
for k = c
disp(k{});
end
first
second
third
这是对您在示例中所做的最直接的翻译。