警告:
问题仍然适用于
for…of循环.>不要使用for…in迭代数组,用它来迭代对象的属性.那说,这个
我知道for…inJavaScript 中的基本语法如下所示:
for (var obj in myArray) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
但是如何获得循环计数器/索引?
var i = 0;
for (var obj in myArray) {
alert(i)
i++
}
Run Code Online (Sandbox Code Playgroud)
for (var i = 0; i < myArray.length; i++) {
var obj = myArray[i]
alert(i)
}
Run Code Online (Sandbox Code Playgroud)
但我宁愿使用更简单的for-in循环.我认为它们看起来更好,更有意义.
有更简单或更优雅的方式吗?
for i, obj in enumerate(myArray):
print i
Run Code Online (Sandbox Code Playgroud) 我知道如何在单独的行上使用for循环和if语句,例如:
>>> a = [2,3,4,5,6,7,8,9,0]
... xyz = [0,12,4,6,242,7,9]
... for x in xyz:
... if x in a:
... print(x)
0,4,6,7,9
Run Code Online (Sandbox Code Playgroud)
而且我知道当语句很简单时我可以使用列表理解来组合这些,例如:
print([x for x in xyz if x in a])
Run Code Online (Sandbox Code Playgroud)
但是我找不到的是一个很好的例子(复制和学习)演示了一组复杂的命令(不仅仅是"print x"),这些命令是在for循环和一些if语句的组合之后发生的.我期望的东西看起来像:
for x in xyz if x not in a:
print(x...)
Run Code Online (Sandbox Code Playgroud)
这不是python应该工作的方式吗?
我的JS程序遇到了一些奇怪的问题.我有这个工作正常但由于某种原因它不再工作.我只是想找到单选按钮的值(选择哪一个)并将其返回到变量.由于某种原因,它不断返回undefined.
这是我的代码:
function findSelection(field) {
var test = 'document.theForm.' + field;
var sizes = test;
alert(sizes);
for (i=0; i < sizes.length; i++) {
if (sizes[i].checked==true) {
alert(sizes[i].value + ' you got a value');
return sizes[i].value;
}
}
}
Run Code Online (Sandbox Code Playgroud)
submitForm:
function submitForm() {
var genderS = findSelection("genderS");
alert(genderS);
}
Run Code Online (Sandbox Code Playgroud)
HTML:
<form action="#n" name="theForm">
<label for="gender">Gender: </label>
<input type="radio" name="genderS" value="1" checked> Male
<input type="radio" name="genderS" value="0" > Female<br><br>
<a href="javascript: submitForm()">Search</A>
</form>
Run Code Online (Sandbox Code Playgroud) 在for循环遍历列表的Python 循环中,我们可以编写:
for item in list:
print item
Run Code Online (Sandbox Code Playgroud)
它整齐地遍历列表中的所有元素.有没有办法在循环中知道到目前为止我循环了多少次?例如,我想要一个列表,在我处理了十个元素后,我想用它们做一些事情.
我想到的替代方案将是这样的:
count=0
for item in list:
print item
count +=1
if count % 10 == 0:
print 'did ten'
Run Code Online (Sandbox Code Playgroud)
要么:
for count in range(0,len(list)):
print list[count]
if count % 10 == 0:
print 'did ten'
Run Code Online (Sandbox Code Playgroud)
到目前为止,是否有更好的方法(就像for item in list)获得迭代次数?
我想循环遍历Python列表并一次处理2个列表项.用另一种语言这样的东西:
for(int i = 0; i < list.length(); i+=2)
{
// do something with list[i] and list[i + 1]
}
Run Code Online (Sandbox Code Playgroud)
实现这一目标的最佳方法是什么?
像许多人一样,我一直在尝试C + 11带来的不同功能.我最喜欢的一个是"基于范围的循环".
我明白那个:
for(Type& v : a) { ... }
Run Code Online (Sandbox Code Playgroud)
相当于:
for(auto iv = begin(a); iv != end(a); ++iv)
{
Type& v = *iv;
...
}
Run Code Online (Sandbox Code Playgroud)
而这begin()只是返回a.begin()标准容器.
但是,如果我想让我的自定义类型"基于范围的循环" - 意识到什么?
如果我只是专注begin()和end()?
如果我的自定义类型属于命名空间xml,我应该定义xml::begin()还是std::begin()?
简而言之,这样做的准则是什么?
是否可以在C++的for循环的初始化主体中声明两个不同类型的变量?
例如:
for(int i=0,j=0 ...
Run Code Online (Sandbox Code Playgroud)
定义了两个整数.我可以在初始化主体中定义a int和a char吗?怎么做?
我在django模板中显示以下for循环显示天数.我想知道,是否有可能在循环中迭代一个数字(在下面的例子中).或者我是否必须将其存储在数据库中,然后以days.day_number的形式查询?
{% for days in days_list %}
<h2># Day {{ i }} - From {{ days.from_location }} to {{ days.to_location }}</h2>
{% endfor %}
Run Code Online (Sandbox Code Playgroud) 如果我有一个嵌套在另一个中的for循环,我怎么能以最快的方式有效地从两个循环(内部和外部)中出来?
我不想使用布尔值,然后不得不说去另一个方法,而只是在外部循环后执行第一行代码.
这是一个快速而好的方式吗?
谢谢
我认为异常并不便宜/应该只是在一个真正特殊的条件下抛出等等.因此我认为从性能角度来看这个解决方案并不好.
我觉得利用.NET(anon方法)中的新功能做一些非常基本的事情是不对的.
因此,tvon(抱歉不能拼写完整的用户名!)有一个很好的解决方案.
Marc:很好地使用了anon方法,这也很棒但是因为我可以在一个不使用支持anon方法的.NET/C#版本的工作中,我也需要知道一种传统的方法.
for-loop ×10
c++ ×3
loops ×3
python ×3
javascript ×2
c# ×1
c++11 ×1
character ×1
counter ×1
declaration ×1
django ×1
foreach ×1
html ×1
if-statement ×1
iteration ×1
list ×1
nested-loops ×1
radio-button ×1
scope ×1