javascript

git

java

python

git-remote

c++

github

django

c#

reactjs

iteration

std

c++-faq

git-checkout

generator

coroutine

spring-mvc

reflection

javascript-objects

html5

迭代-Java-获取HashMap中的键索引?

在Java中,如果我遍历HashMapkeySet(),如何(在循环内部)获取该键的数字索引?

基本上,当我遍历地图时,我希望能够得到0,1,2 ...我认为这比声明一个int并随每次迭代递增而干净。

谢谢。

trans by 2020-08-07T00:30:44Z

是否可以在Java中合并迭代器?

是否可以在Java中合并迭代器? 我有两个迭代器,我想合并/合并它们,以便我可以一次遍历它们的元素(在同一循环中)而不是两步。 那可能吗?

请注意,两个列表中的元素数量可以不同,因此无法解决两个列表中的一个循环问题。

Iterator<User> pUsers = userService.getPrimaryUsersInGroup(group.getId());
Iterator<User> sUsers = userService.getSecondaryUsersInGroup(group.getId());

while(pUsers.hasNext()) {
  User user = pUsers.next();
  .....
}

while(sUsers.hasNext()) {
  User user = sUsers.next();
  .....
}
trans by 2020-08-06T20:48:08Z

循环通过lis时获取下一个元素

li = [0, 1, 2, 3]

running = True
while running:
    for elem in li:
        thiselem = elem
        nextelem = li[li.index(elem)+1]

当到达最后一个元素时,将引发IndexError(对于任何迭代的列表,元组,字典或字符串都是这种情况)。 我实际上当时希望nextelem等于li[0]。对此,我比较麻烦的解决方案是

while running:
    for elem in li:
        thiselem = elem
        nextelem = li[li.index(elem)-len(li)+1]   # negative index

有更好的方法吗?

trans by 2020-08-06T04:33:52Z

迭代-Ruby数组each_slice_with_index?

如果我有arr = [1, 2, 3, 4],则可以执行以下操作...

> arr.each_slice(2) { |a, b| puts "#{a}, #{b}" }
1, 2
3, 4

...和...

> arr.each_with_index { |x, i| puts "#{i} - #{x}" }
0 - 1
1 - 2
2 - 3
3 - 4

...但是有内置的方法吗?

> arr.each_slice_with_index(2) { |i, a, b| puts "#{i} - #{a}, #{b}" }
0 - 1, 2
2 - 3, 4

我知道我可以构建自己的并将其粘贴到array方法中。 仅查看是否有内置函数可以执行此操作。

trans by 2020-08-05T02:53:45Z

递归-将递归算法转换为迭代算法的设计模式

是否有任何通用的启发式方法,技巧,窍门或通用设计范例可用于将递归算法转换为迭代算法? 我知道这是可以做到的,我想知道这样做是否值得牢记。

trans by 2020-08-02T18:44:38Z

使用'in'匹配数组中Python对象的属性

我不记得我是否在做梦,但我似乎还记得有一个函数可以执行以下操作:

foo in iter_attr(array of python objects, attribute name)

我看了看文档,但是这种事情不会落在任何明显列出的标题下

trans by 2020-08-02T03:04:17Z

VBScript中的“继续”(到下一个迭代)

我和一位同事试图找出一种方法,该方法等效于VBScript“ For / Next”循环中的“ continue”语句。

我们看到的每个地方都发现,如果没有讨厌的嵌套,人们就无法在VBScript中执行此操作,这对我们来说不是一个选择,因为这是一个很大的循环。

我们想到了这个主意。 它会像“继续(继续下一个迭代)”那样工作吗? 有没有人有更好的解决方法或改进建议?

For i=1 to N
  For workaroundloop = 1 to 1
    [Code]
    If Condition1 Then
      Exit For
    End If

    [MoreCode]
    If Condition2 Then
      Exit For
    End If

    [MoreCode]
    If Condition2 Then
      Exit For
    End If

    [...]

  Next
Next

感谢您的意见

trans by 2020-07-24T21:43:46Z

java-如何遍历对象的ArrayList的对象的ArrayList?

使用示例:

假设我有一个班级叫Bullet。我还有另一个班级叫Gun

Bullet的ArrayList为Gun

要遍历Bullet的Arraylist而不是这样做:

ArrayList<Gun> gunList = new ArrayList<Gun>();
for (int x=0; x<gunList.size(); x++)
    System.out.println(gunList.get(x));

我们可以像这样简单地遍历Bullet的ArrayList:

for (Gun g: gunList) System.out.println(g); 

现在,我要迭代并打印出我的第三个Gun对象的所有Bullet

for (int x=0; x<gunList.get(2).getBullet().size(); x++)  //getBullet is just an accessor method to return the arrayList of Bullet 
    System.out.println(gunList.get(2).getBullet().get(x));

现在我的问题是:与使用常规的for循环不同,如何使用ArrayList迭代打印出枪支对象列表?

trans by 2020-07-22T16:25:48Z

编程语言-所有迭代算法都可以递归表示吗?

如果不是,是否有一个很好的反例显示迭代算法,而该算法不存在递归对应项?

如果是所有迭代算法都可以递归表示的情况,那么在这种情况下是否更难做到?

另外,编程语言在所有这一切中起什么作用? 我可以想象,Scheme程序员在迭代(=尾递归)和堆栈使用方面与纯Java程序员不同。

trans by 2020-07-20T03:53:26Z

java-并发修改异常:添加到ArrayList

问题发生在

Element element = it.next();

包含该行的代码在Element的内部

for (Iterator<Element> it = mElements.iterator(); it.hasNext();){
    Element element = it.next();

    if(touchX > element.mX  && touchX < element.mX + element.mBitmap.getWidth() && touchY > element.mY   
            && touchY < element.mY + element.mBitmap.getHeight()) {  

        //irrelevant stuff..

        if(element.cFlag){
            mElements.add(new Element("crack",getResources(), (int)touchX,(int)touchY));
            element.cFlag = false;

        }           
    }
}

所有这些都在Element内部,其中ElementsElement

当我触摸Element时,它可能会激活Elements,这将创建另一个具有不同属性的Element,它们会从屏幕上掉落并在不到一秒钟的时间内毁坏自己。 这是我创建粒子效果的方式。 我们可以将其称为“粒子” crack,就像构造函数中的String参数一样。

一切正常,直到我添加另一个主Element。现在我同时在屏幕上有两个Elements,如果我触摸最新的Element,它会正常工作并发射粒子。

但是,如果我触摸并激活了旧版Element上的cFlag,则它给了我例外。

 07-28 15:36:59.815: ERROR/AndroidRuntime(4026): FATAL EXCEPTION: main
07-28 15:36:59.815: ERROR/AndroidRuntime(4026): java.util.ConcurrentModificationException
07-28 15:36:59.815: ERROR/AndroidRuntime(4026):     at java.util.ArrayList$ArrayListIterator.next(ArrayList.java:573)
07-28 15:36:59.815: ERROR/AndroidRuntime(4026):     at com.Juggle2.Panel.onTouchEvent(Panel.java:823)
07-28 15:36:59.815: ERROR/AndroidRuntime(4026):     at android.view.View.dispatchTouchEvent(View.java:3766)
07-28 15:36:59.815: ERROR/AndroidRuntime(4026):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863)
07-28 15:36:59.815: ERROR/AndroidRuntime(4026):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863)
07-28 15:36:59.815: ERROR/AndroidRuntime(4026):     at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1767)
07-28 15:36:59.815: ERROR/AndroidRuntime(4026):     at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1119)
07-28 15:36:59.815: ERROR/AndroidRuntime(4026):     at android.app.Activity.dispatchTouchEvent(Activity.java:2086)
07-28 15:36:59.815: ERROR/AndroidRuntime(4026):     at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1751)
07-28 15:36:59.815: ERROR/AndroidRuntime(4026):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1785)
07-28 15:36:59.815: ERROR/AndroidRuntime(4026):     at android.os.Handler.dispatchMessage(Handler.java:99)
07-28 15:36:59.815: ERROR/AndroidRuntime(4026):     at android.os.Looper.loop(Looper.java:123)
07-28 15:36:59.815: ERROR/AndroidRuntime(4026):     at android.app.ActivityThread.main(ActivityThread.java:4627)
07-28 15:36:59.815: ERROR/AndroidRuntime(4026):     at java.lang.reflect.Method.invokeNative(Native Method)
07-28 15:36:59.815: ERROR/AndroidRuntime(4026):     at java.lang.reflect.Method.invoke(Method.java:521)
07-28 15:36:59.815: ERROR/AndroidRuntime(4026):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:893)
07-28 15:36:59.815: ERROR/AndroidRuntime(4026):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:651)
07-28 15:36:59.815: ERROR/AndroidRuntime(4026):     at dalvik.system.NativeStart.main(Native Method)

我该如何工作?

trans by 2020-07-10T16:43:23Z

动作3-通过AS3字典进行有效循环

for (var k in dictionary) 
{
  var key:KeyType = KeyType(k);
  var value:ValType = ValType(dictionary[k]); // <-- lookup
  // do stuff
}

这就是我用来遍历字典中条目的内容。 正如您在每次迭代中看到的那样,我在字典中执行查找。 有没有更有效的方法来迭代字典(同时保持对密钥的访问)?

trans by 2020-07-09T21:23:06Z

迭代-遍历嵌套的JavaScript对象

我正在尝试遍历嵌套对象以检索由字符串标识的特定对象。 在下面的示例对象中,标识符字符串是“ label”属性。 我无法解决如何遍历树以返回适当对象的问题。 任何帮助或建议,将不胜感激。

var cars = {
  label: 'Autos',
  subs: [
    {
      label: 'SUVs',
      subs: []
    },
    {
      label: 'Trucks',
      subs: [
        {
          label: '2 Wheel Drive',
          subs: []
        },
        {
          label: '4 Wheel Drive',
          subs: [
            {
              label: 'Ford',
              subs: []
            },
            {
              label: 'Chevrolet',
              subs: []
            }
          ]
        }
      ]
    },
    {
      label: 'Sedan',
      subs: []
    }
  ]
}
trans by 2020-06-23T17:49:02Z

迭代-Python:迭代时将元素添加到列表

我知道在迭代列表时不允许删除元素,但是在迭代时允许将元素添加到python列表中。 这是一个例子:

    for a in myarr:
      if somecond(a):
          myarr.append(newObj())

我已经在我的代码中尝试过此方法,并且它似乎可以正常工作,但是我不知道是否是因为我很幸运,将来它会在某个时候中断吗?

编辑:我不愿复制列表,因为“ myarr”很大,因此会太慢。 另外,我需要使用“ somecond()”检查附加对象。

编辑:在某些时候“ somecond(a)”将是错误的,因此不能有无限循环。

编辑:有人问“ somecond()”函数。 myarr中的每个对象都有一个大小,并且每次“ somecond(a)”为true并将新对象附加到列表中时,新对象的大小将小于a。 “ somecond()”具有一个epsilon来表示小对象的数量,如果它们太小,它将返回“ false”

trans by 2020-06-19T16:23:56Z

迭代-如何在C中迭代字符串?

现在,我正在尝试:

#include <stdio.h>

int main(int argc, char *argv[]) {

    if (argc != 3) {

        printf("Usage: %s %s sourcecode input", argv[0], argv[1]);
    }
    else {
        char source[] = "This is an example.";
        int i;

        for (i = 0; i < sizeof(source); i++) {

            printf("%c", source[i]);
        }
    }

    getchar();

    return 0;
}

这也不起作用:

char *source = "This is an example.";
int i;

for (i = 0; i < strlen(source); i++){

    printf("%c", source[i]);
}

我得到了错误

Test.exe中0x5bf714cf(msvcr100d.dll)的未处理异常:0xC0000005:在位置0x00000054读取时访问冲突。

(从德语宽松翻译)

那么我的代码有什么问题呢?

trans by 2020-02-16T01:38:07Z

numpy-对于多维范围,Python是否具有range(n)的等效项?

在Python上,range(3)将返回[0,1,2]。 多维范围是否等效?

range((3,2)) # [(0,0),(0,1),(1,0),(1,1),(2,0),(2,1)]

因此,例如,在基于图块的游戏中遍历矩形区域的图块可以写成:

for x,y in range((3,2)):

注意我不是在要求实现。 我想知道这是否是一种公认的模式,以及Python上是否有内置函数或它的标准/通用库。

trans by 2020-02-15T02:41:22Z

为什么我们不能分配一个foreach迭代变量,而可以使用访问器完全修改它呢?

我对此很好奇:以下代码将无法编译,因为我们无法修改foreach迭代变量:

        foreach (var item in MyObjectList)
        {
            item = Value;
        }

但是以下将编译并运行:

        foreach (var item in MyObjectList)
        {
            item.Value = Value;
        }

为什么第一个无效,而第二个可以在下面做同样的事情(我一直在为此寻找正确的英语表达,但我不记得了。在...下^^)

trans by 2020-02-10T09:14:55Z

文件-在Python中,如何在一个迭代器上进行迭代,然后在另一个迭代器上进行迭代?

我想迭代两个不同的迭代器,如下所示:

file1 = open('file1', 'r')
file2 = open('file2', 'r')
for item in one_then_another(file1, file2):
    print item

我希望先打印file1的所有行,然后再打印file2的所有行。

我想要一些通用的东西,因为迭代器可能不是文件,这只是一个例子。 我知道我可以这样:

for item in [file1]+[file2]:

但这会将两个文件都读到内存中,我希望避免。

trans by 2020-02-06T02:39:33Z

python-对文件进行迭代在第二时间不起作用

我对文件进行迭代有问题。 这是我在解释器上输入的内容和结果:

>>> f = open('baby1990.html', 'rU')
>>> for line in f.readlines():
...  print(line)
... 
# ... all the lines from the file appear here ...

当我尝试再次遍历同一个打开的文件时,我什么也没得到!

>>> for line in f.readlines():
...  print(line)
... 
>>>

根本没有输出。 为了解决这个问题,我必须对文件close()进行处理,然后再次将其打开以进行读取! 那是正常行为吗?

trans by 2020-02-05T04:37:27Z

vb.net-为什么在lambda表达式中使用迭代变量很糟糕

我只是在编写一些快速代码,并注意到此编译器错误

在lambda表达式中使用迭代变量可能会产生意外结果。
而是在循环内创建一个局部变量,并为其指定迭代变量的值。

我知道这意味着什么,我可以轻松解决它,没什么大不了的。
但是我想知道为什么在lambda中使用迭代变量是个坏主意吗?
以后我会引起什么问题?

trans by 2020-01-24T11:02:32Z

python-迭代lis的pythonic方法

我想遍历列表中除前几个元素外的所有内容,例如:

for line in lines[2:]:
    foo(line)

这很简洁,但是复制了整个列表,这是不必要的。 我可以做:

del lines[0:2]
for line in lines:
    foo(line)

但这会修改列表,但并不总是很好。

我可以做这个:

for i in xrange(2, len(lines)):
    line = lines[i]
    foo(line)

但是,那只是毛病。

更好的可能是:

for i,line in enumerate(lines):
    if i < 2: continue
    foo(line)

但这并不像第一个例子那么明显。

所以:有什么方法可以像第一个示例一样显而易见,但是不会不必要地复制列表?

trans by 2020-01-22T20:04:44Z

1 2 3 4 5 下一页 共5页