【发布时间】:2014-08-10 04:18:31
【问题描述】:
在 python 中,可以使用zip 循环多个向量或enumerate 来获取循环向量的当前索引,如下所示
one = ['A', 'B', 'C']
two = [1, 2, 3]
for i, j in zip(one, two):
print i, j
for j, i in enumerate(one):
print i, two[j]
给予
>>>
A 1
B 2
C 3
A 1
B 2
C 3
在 MATLAB 中可以这样做
one = {'A' 'B' 'C'};
two = [1 2 3];
for i = 1:1:length(one)
printf('%s %i\n', one{i}, two(i));
endfor
j = 1;
for i = one
printf('%s %i\n', i{1}, two(j));
j = j + 1;
endfor
给予
A 1
B 2
C 3
A 1
B 2
C 3
这两个选项之一就是在 MATLAB 中的常用方法,即。 e.循环遍历多个向量“并行”还是有其他更好的方法?
奖金:
two = [1 2 3];
two = [1, 2, 3];
这两行在上面的 MATLAB 程序中给出了相同的输出。有什么区别?
【问题讨论】:
-
您想在
A和1、B和2之间使用两个“空格”等等,还是用其他东西作为它们之间的分隔符?顺便说一句,我认为 MATLAB 没有 printf 或者有吗? -
@Divakar 好的,它是八度代码(因为 matlab 太 exp 不能在家里使用),但基本上我在工作中使用 matlab。无论如何,这不是关于打印功能,而是关于循环的最佳方式。在我看来,第一个选项是一个不错的选择,然后只需使用
i作为索引来访问向量、列表或其他任何内容的元素.. -
好的,没关系。那么分隔符呢?
-
@divakar 不确定我说得对。分隔符(打印时)由
printf中的字符串给出。我想知道的是是否使用,或空格作为[]之间的分隔符都给出向量?也许这是一个八度特定的东西。 -
嗯,你正在使用
printf('%s %i\n'..), so it seem there is "one space" between printingone` 和two元素。如果您使用printf('%s:%i\n',则使用:作为分隔符。所以,我的问题是 - 你想要打印的分隔符是什么?
标签: matlab loops for-loop octave