什么是最有效的方法来检查一个数组是一个平面的原始值数组,或者如果它是一个multidimensional array ? 有没有什么办法做到这一点,而不是实际循环一个数组,并在其每个元素上运行is_array() ?
显然有很多方法来迭代一个集合。 好奇的是,如果有任何分歧,或者为什么你会用另一种方式。 第一类: List<string> someList = <some way to init> foreach(string s in someList) { <process the string> } 另一种方式: List<string> someList = <some way to init> someList.ForEach(delegate(string s) { <process the string> }); 我想我的头顶上,而不是我上面使用的匿名委托,你会有一个可以指定的可重用的委托…
我正在寻找通过一个Map<String, String> JSTL循环Map<String, String>并输出密钥的值和它的值。 例如我有一个Map<String, String>可以有任何数量的条目,我想通过使用JSTL这个地图循环,并输出密钥和它的价值。 我知道如何使用键${myMap['keystring']}来访问该值,但是如何访问该键?
在我下面的示例代码中,是否真的需要counter = 0,还是有一个更好,更Python的方法来访问循环计数器? 我看到一些与循环计数器有关的PEP,但是它们被推迟或拒绝( PEP 212和PEP 281 )。 这是我的问题的一个简单的例子。 在我的真实应用中,这是用graphics完成的,整个菜单必须重新绘制每一帧。 但是这以简单的文本方式certificate它很容易重现。 也许我还应该补充一点,我正在使用Python 2.5,尽pipe如果有特定于2.6或更高版本的方法,我仍然感兴趣。 # Draw all the options, but highlight the selected index def draw_menu(options, selected_index): counter = 0 for option in options: if counter == selected_index: print " [*] %s" % option else: print " [ ] %s" % option counter += 1 options […]
所以我想迭代string中的每个字符。 所以我认为: for (char c : "xyz") 但是我得到一个编译器错误: MyClass.java:20: foreach not applicable to expression type 我怎样才能做到这一点?
为什么你必须调用iteritems()来迭代字典中的键值对呢? 即 dic = {'one':'1', 'two':'2'} for k, v in dic.iteritems(): print k, v 为什么不是迭代字典的默认行为 for k, v in dic: print k, v
在Java的for循环中防止null的最好方法是什么? 这看起来很丑陋: if (someList != null) { for (Object object : someList) { // do whatever } } 要么 if (someList == null) { return; // Or throw ex } for (Object object : someList) { // do whatever } 可能没有其他办法。 他们是否应该把它放在构造本身,如果它是空的,那么不要运行循环?
更新,见下文! 我听说过,C ++ 0x允许编译器在下面的代码片段中打印“Hello” #include <iostream> int main() { while(1) ; std::cout << "Hello" << std::endl; } 这显然与线程和优化function有关。 在我看来,这可以让很多人感到惊讶。 有人有一个很好的解释,为什么这是必要的允许? 作为参考,最新的C ++ 0x草案在6.5/5说 一个循环,在for语句的for-init语句之外, 不会调用库I / O函数,并且 不访问或修改易失性对象, 不执行同步操作(1.10)或primefaces操作(第29章) 可能由执行方式假定终止。 [注意:这是为了允许编译器转换,例如删除空循环,即使在无法证实终止的情况下也是如此。 – 结束注意] 编辑: 这篇富有洞察力的文章谈到了这个标准文本 不幸的是,没有使用“未定义的行为”这个词。 然而,只要标准说“编译器可以承担P”,就意味着具有属性not-P的程序没有定义语义。 这是否正确,编译器是否允许为上述程序打印“再见”? 这里有一个更有洞察力的线索 ,是关于对C的一个类似的改变,由Guy做了上面的链接文章。 除了其他有用的事实,他们提出了一个似乎也适用于C ++ 0x的解决scheme( 更新 :这将不再适用于n3225 – 见下文!) endless: goto endless; 编译器不允许优化,看来,因为它不是一个循环,而是一个跳转。 另一个家伙总结了C ++ 0x和C201X的改进build议 通过编写一个循环,程序员断言循环执行一些具有可见行为的事情(执行I […]
我只是想知道如果你做了这样的事情,是否会有速度或效率的损失: int i = 0; while(i < 100) { int var = 4; i++; } 它声明int var一百次。 在我看来,似乎会有,但我不确定。 相反,这样做会更实际/更快: int i = 0; int var; while(i < 100) { var = 4; i++; } 还是它们是相同的,速度和效率?
可能重复: 什么是在块中迭代列表的最“pythonic”方式? 我想循环一个Python列表,并一次处理两个列表项。 在另一种语言中是这样的: for(int i = 0; i < list.length(); i+=2) { // do something with list[i] and list[i + 1] } 什么是完成这个最好的方法?