标签: iterator

ForLoop in Python - 迭代器应该以乘数因子100增加

我只想弄清楚这样的事情(用C语言写成):

for (long long i = 100; i <= pow(10,length); i = i * 100){} 
Run Code Online (Sandbox Code Playgroud)

将被翻译成Python 3.作为最后一部分,迭代器应该将自身乘以100,这是我被卡住的地方.

任何援助将不胜感激.

python iterator for-loop

0
推荐指数
1
解决办法
92
查看次数

迭代器和如果

我的程序有点问题.

Iterator<MyString> it = globalSet.iterator();
Iterator<String> it2 = globalArray.iterator();



        while(it.hasNext() && it2.hasNext())
        {
            System.out.println(it2.next());
            if(it.next().getLine().contains(it2.next()) == true)
            {


                //it.remove();
            }

        }
Run Code Online (Sandbox Code Playgroud)

如果我禁用if子句我的输出是正确的,如下所示:

1;Trägertour 096;1410;Autotour 1N410;
2;Trägertour 097;1410;Autotour 1N410;
3;Trägertour 098;1410;Autotour 1N410;
4;Trägertour 099;1410;Autotour 1N410;
5;Trägertour 100;1410;Autotour 1N410;
Run Code Online (Sandbox Code Playgroud)

但是如果if子句被启用,我的输出看起来像这样:

1;Trägertour 096;1410;Autotour 1N410;
3;Trägertour 098;1410;Autotour 1N410;
5;Trägertour 100;1410;Autotour 1N410;
Run Code Online (Sandbox Code Playgroud)

所以为什么?

java iterator if-statement

0
推荐指数
1
解决办法
78
查看次数

返回字典列表中特定键的平均值/平均值

这可能是重复的,所以如果我没找到,请告诉我.

我的问题在标题中.

我知道下面的代码会这样做,但我不认为这是应该怎么做的.这可以压缩到一个更干净的功能,做同样的事情吗?内置函数怎么样?

def find_sorted_avg(dict_list, key):
    total = 0

    for item in dict_list:
        total += item[key]

    return total / len(dict_list)
Run Code Online (Sandbox Code Playgroud)

如果您知道更好的方法,请告诉我.

python iteration dictionary iterator python-3.x

0
推荐指数
1
解决办法
404
查看次数

Python zip对象只能使用一次.这是为什么?

我想学习zip类的功能.我写了这个非常简单的例子.

>>> names = ['name1','name2','name3']
>>> ages = ['age1','age2','age3']
>>> print(zip(names, ages))
<zip object at 0x03DB18F0>
>>> zipped = zip(names, ages)
for i in zipped:
    type(i)
    print(i)
Run Code Online (Sandbox Code Playgroud)

和输出(如预期的那样) -

<class 'tuple'>
('name1', 'age1')
<class 'tuple'>
('name2', 'age2')
<class 'tuple'>
('name3', 'age3')
Run Code Online (Sandbox Code Playgroud)

但是,如果我这样写,请立即在此行后:

for i in zipped:
    print(i)
Run Code Online (Sandbox Code Playgroud)

它编译但没有打印任何东西!

要重新检查,我再次这样做了 -

>>> zipped = zip(names, ages)
>>> for i in zipped:
    print(i)
('name1', 'age1')
('name2', 'age2')
('name3', 'age3')
Run Code Online (Sandbox Code Playgroud)

这次打印正确.但是在做解压缩时 -

>>> names2, ages2 = zip(*zipped)
Traceback (most recent call last):
  File …
Run Code Online (Sandbox Code Playgroud)

python iterator

0
推荐指数
1
解决办法
1232
查看次数

python生成器for..in vs next()

我对python的生成器有点困惑,并使用for循环vs使用next()它们.

我需要解析一个文本文件,其中包含有关每条线路上汽车的信息,每条汽车在强制性线路后面有多条非强制性线路,型号名称以a开头a..所以我想以pythonic的方式迭代汽车.

我有以下一点代码:

lines = """a. car1 model
b. car1 price
c. car1 details
a. car2 model
b. car2 price
a. car3 model
b. car3 price
c. car3 details
d. car3 comments
"""

def iter_cars(lineit):
   res = []
   for line in lineit:
       if line.startswith('a') and res:
           yield res
           res = []

       res.append(line)
   yield res

# print the cars with next..., 
lineit = iter(lines.split('\n'))
print(next(iter_cars(lineit)))
print(next(iter_cars(lineit)))
print(next(iter_cars(lineit)))

# reset the iterator and print the cars …
Run Code Online (Sandbox Code Playgroud)

python parsing iterator for-loop generator

0
推荐指数
1
解决办法
114
查看次数

如何写一个加倍迭代器的值?

我想从基值开始,1然后将2每次迭代的基值乘以定义的限制(比如我的数组的总长度).

我是否必须实现一个特殊的迭代器才能做到这一点?或者,我可以结合其他方法,迭代器类似map,并filter以实现相同的功能组合在一起.虽然我会想象实现我的迭代器会更有效率,但也更冗长.

iterator rust

0
推荐指数
1
解决办法
77
查看次数

C++使用auto与定义的迭代器

任何人都可以在我的代码中解释for循环的差异吗?我知道迭代器是指向某些数据的指针,当我输入"*iter"时,我正在访问该指针指向的值(一个int).但我不明白为什么汽车在这里不会以同样的方式工作.为什么我不需要在另一个for循环中取消引用顶点?

#include <iostream>
#include <list>
#include <queue>

class Graph {
    public:
        Graph(int num_v): num_vertices(num_v), adj_list(new std::list<int>[num_v]) {}

        void add_edge(int u, int v) { adj_list[u].push_back(v); }

        void bfs_traversal(int start) {
            bool* visited = new bool[num_vertices];
            for (int i = 0; i < num_vertices; i++)
                visited[i] = false;
            std::queue<int> q;
            visited[start] = true;
            q.push(start);
            //std::list<int>::iterator iter;
            while(! q.empty()) {
                int node = q.front();
                std::cout << node << " ";
                q.pop();

                /*
                for (iter = adj_list[node].begin(); iter != adj_list[node].end(); ++iter) {
                    if (! …
Run Code Online (Sandbox Code Playgroud)

c++ iterator auto c++11

0
推荐指数
2
解决办法
955
查看次数

groupby周围的列表导致空组

我正在四处玩groupby,以便对itertools有一个更好的感觉,因此我按照数字对元组列表进行了分组,并尝试获取结果组的列表.groupby然而,当我将结果转换为列表时,我得到一个奇怪的结果:除最后一组之外的所有组都是空的.这是为什么?我假设将迭代器转换为列表效率较低但从不改变行为.我猜这些列表是空的,因为遍历了内部迭代器但是何时/何地发生?

import itertools

l=list(zip([1,2,2,3,3,3],['a','b','c','d','e','f']))
#[(1, 'a'), (2, 'b'), (2, 'c'), (3, 'd'), (3, 'e'), (3, 'f')]

grouped_l = list(itertools.groupby(l, key=lambda x:x[0]))
#[(1, <itertools._grouper at ...>), (2, <itertools._grouper at ...>), (3, <itertools._grouper at ...>)]

[list(x[1]) for x in grouped_l]
[[], [], [(3, 'f')]]


grouped_i = itertools.groupby(l, key=lambda x:x[0])
#<itertools.groupby at ...>
[list(x[1]) for x in grouped_i]
[[(1, 'a')], [(2, 'b'), (2, 'c')], [(3, 'd'), (3, 'e'), (3, 'f')]]
Run Code Online (Sandbox Code Playgroud)

python grouping iterator python-itertools

0
推荐指数
2
解决办法
514
查看次数

如何通过println(i for i in 1..10)缩短代码,就像Kotlin中的Python一样

我现在正在学习Kotlin.

当我阅读Kotlin文档时,它写道我有ranges像Python 这样的技术(例如:1..10).但是,我尝试下面的代码,但失败了.

>>> print(i for i in 1..10)
...
error: expecting ')'
print(i for i in 1..10)
        ^
error: unexpected tokens (use ';' to separate expressions on the same line)
print(i for i in 1..10)
                    ^
Run Code Online (Sandbox Code Playgroud)

有没有办法通过使用i for i in 1..10类似Python 来缩短此代码.

iterator kotlin

0
推荐指数
1
解决办法
51
查看次数

从ArrayList中删除所有null使用Iterator的remove()方法

我是Java的新手.我只是在Collection Framework中寻找Iterator.但现在我想通过使用Iterator的remove()方法从ArrayList中删除所有null.所以尝试了下面的代码,但我没有得到预期的输出,因为我想要一个没有任何空值的列表.请解释一下谢谢.

这是我的代码

package setinterface;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;

public class InternalWorkingOfArrayList {

    public static void main(String[] args) {

        List<String> setOfString = new ArrayList<String>();
        setOfString.add("A");
        setOfString.add("B");
        setOfString.add("C");
        setOfString.add("B");
        setOfString.add(null);
        setOfString.add("A");
        setOfString.add(null);


        Iterator<String> iterator = setOfString.iterator();
        while (iterator.hasNext()) {
            String string = (String) iterator.next();
            if (null==string) {
                iterator.remove();
                break;
            }   
        }
        for (String string1 : setOfString) {
            System.out.println(string1);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

java collections iterator arraylist cursor

0
推荐指数
1
解决办法
227
查看次数