标签: iterable

如何将pandas系列转换为索引和值的元组

我正在寻找一种有效的方法,将一个系列转换为其索引的元组及其值.

s = pd.Series([1, 2, 3], ['a', 'b', 'c'])
Run Code Online (Sandbox Code Playgroud)

我想要一个数组,列表,系列,一些可迭代:

[(1, 'a'), (2, 'b'), (3, 'c')]
Run Code Online (Sandbox Code Playgroud)

python iterable series pandas

20
推荐指数
3
解决办法
2万
查看次数

过滤泛型类型列表

可以使用番石榴轻松过滤列表或Iterables filter(Iterable<?> unfiltered, Class<T> type).此操作执行两个任务:列表被过滤转换为给定类型T的序列.

然而,我常常最终Iterables<Something<?>> 得到Iterables<Something<T>>一些专门的T 的后续序列.

很明显,由于类型擦除,番石榴无法解决这个问题:Something<T>没有提供有关其T的任何直接信息.

可以说我有类似的东西S<? extends Number>.如果我能够定义一些谓词告诉我是否S<?>可以将其转换为S<Double>我可以将其用作文件管理器:

<T extends Number> Predicate<S<?>> isOfType(Class<N> type) {...}
Run Code Online (Sandbox Code Playgroud)

有:

Iterable<S<?>> numbers;
Iterable<S<?>> filtered = Iterable.filter(numbers, isOfType(Double.class));
Run Code Online (Sandbox Code Playgroud)

这执行过滤任务,但它错过了转换步骤.如果我认为我的Predicate运作良好,我甚至可以考虑转换:

Iterable<S<Double>> doubles = (Iterable<S<Double>>) filtered;
Run Code Online (Sandbox Code Playgroud)

但这暴露了一些丑陋的演员操作.

作为替代方案,我可以提供Function<S<?>, S<Double>>执行演员表演.Class.cast()但是,如果元素不能被转换(或转换),则它不应该抛出ClassCastException但只是返回null.这样可以在没有任何显式转换的情况下转换序列:

<T extends Number> Function<S<?>, S<T>> castOrNull(Class<N> type) {...}

Iterable<S<Double>> doubles = Iterable.filter(numbers, castOrNull(Double.class));
Run Code Online (Sandbox Code Playgroud)

但是列表并没有真正过滤:相反,它仍然包含无法转换或转换为每个元素的空对象S<Double>.但这可以通过额外的过滤步骤轻松解决,如:

Iterable<S<Double>> doubles = Iterables.filter(doubles, Predicates.notNull());
Run Code Online (Sandbox Code Playgroud)

第二种解决方案对我来说似乎更聪明.在 …

java generics iterable guava

19
推荐指数
1
解决办法
2945
查看次数

如何使类可迭代?

这是我的班级

public class csWordSimilarity
{
    public int irColumn1 = 0;
    public int irColumn2 = 0;
    public int irColumn3 = 0;
    public int irColumn4 = 0;
    public int irColumn5 = 0;
}
Run Code Online (Sandbox Code Playgroud)

我想使该类可迭代使用,如下所示

foreach (int irVal in myVarWordSimilarity)
{

} 
Run Code Online (Sandbox Code Playgroud)

myVarWordSimilaritycsWordSimilarity类型.所以我想迭代所有公共int变量.我如何修改csWordSimilarity类以使其像上面的方式一样进行迭代.

c# iterable class c#-4.0

19
推荐指数
2
解决办法
2万
查看次数

Rust是否具有Python的列表推导语法?

Python列表理解非常简单:

>>> l = [x for x in range(1, 10) if x % 2 == 0]
>>> [2, 4, 6, 8] 
Run Code Online (Sandbox Code Playgroud)

Rust是否具有如下等效语法:

let vector = vec![x for x in (1..10) if x % 2 == 0]
// [2, 4, 6, 8]
Run Code Online (Sandbox Code Playgroud)

syntax iterable list-comprehension rust

17
推荐指数
2
解决办法
3383
查看次数

Python:映射到位

我想知道是否有办法在某些东西上运行地图.map的工作方式是它需要一个iterable并将一个函数应用于该iterable中的每个项目,从而生成一个列表.有没有办法让map修改可迭代对象本身?

python iterable map-function

16
推荐指数
2
解决办法
8533
查看次数

为什么在java.util.Collection上有一个方法iterator()

为什么在接口java.util.Collection上定义了iterator()方法,它已经扩展了java.util.Iterable,它定义了这个方法.

我正在考虑某种向后兼容性或在集合级别上对方法编写一些JavaDoc的机会.

还有其他想法吗?

java collections iterator iterable

15
推荐指数
3
解决办法
658
查看次数

在同一个类中实现Java Iterator和Iterable?

我正在尝试理解Java IteratorIterable接口

我正在写这门课

class MyClass implements Iterable<String> {
    public String[] a = null;
    public MyClass(String[] arr) {
        a = arr;    
    }

    public MyClassIterator iterator() {
        return new MyClassIterator(this);
    }

    public class MyClassIterator implements Iterator<String> {
        private MyClass myclass = null;
        private int count = 0;
        public MyClassIterator(MyClass m) {
            myclass = m;    
        }

        public boolean hasNext() {
            return count < myclass.a.length;
        }
        public String next() {
            int t = count;
            count++;
            return myclass.a[t];
        }

        public void remove() …
Run Code Online (Sandbox Code Playgroud)

java iterator iterable

15
推荐指数
2
解决办法
4万
查看次数

有关多次使用的Iterable接口是否有任何正式合同?

从Java 5开始,我们有了一个java.lang.Iterable可以在foreach循环中使用的新类型:

for (Object element : iterable);
Run Code Online (Sandbox Code Playgroud)

Iterable合同没有规定是否其iterator()方法可以在可迭代的处理之前被调用一次以上.即,不清楚以下是否可以为所有人工作Iterables:

for (Object element : iterable);
for (Object element : iterable);
Run Code Online (Sandbox Code Playgroud)

例如,Iterator包装实现不能使用两次:

public class OneShotIterable<T> implements Iterable<T> {
    private final Iterator<T> it;

    public OneShotIterable(Iterator<T> it) {
        this.it = it;
    }

    @Override
    public Iterator<T> iterator() {
        return it;
    }
}
Run Code Online (Sandbox Code Playgroud)

对于大多数Iterables,这是无关紧要的,因为它们实际上是改装收集API类型,例如List,Set,这已经为自己定义明确合同iterator()的方法.

我的问题是:我的OneShotIterable实施是否违反了我忽略的一些合同?换句话说,用户是否Iterable希望它可以重复使用?如果是这样,Java 5专家组是否有"官方"建议如何处理这样的"一次性" Iterables(例如,IllegalStateException在第二次通话时抛出)?

java iterable

15
推荐指数
1
解决办法
885
查看次数

如何使自定义对象可迭代?

我有一个list自定义类对象(示例如下).

使用:list(itertools.chain.from_iterable(myBigList))我想将所有stations子列表"合并" 到一个大列表中.所以我认为我需要使自定义类成为可迭代的.

这是我的自定义类的示例.

class direction(object) :
    def __init__(self, id) :
        self.id = id              
        self.__stations = list()

    def __iter__(self):
        self.__i = 0                #  iterable current item 
        return iter(self.__stations)

    def __next__(self):
        if self.__i<len(self.__stations)-1:
            self.__i += 1         
            return self.__stations[self.__i]
        else:
            raise StopIteration
Run Code Online (Sandbox Code Playgroud)

我实施了__iter__,__next__但似乎没有用.他们甚至没有被召唤.

知道我能做错什么吗?

注意:使用Python 3.3

python iterable list python-3.x

15
推荐指数
2
解决办法
2万
查看次数

迭代器也是可迭代的吗?

我找到:

>>> a={'x':42, 'y':3.14, 'z':7}
>>> b=a.__iter__()
>>> b.__dir__()
['__next__', ..., '__iter__', ...]
>>> b
<set_iterator object at 0x7efdd4e5afc0>
Run Code Online (Sandbox Code Playgroud)

迭代器是否总是有__iter__方法?

根据/sf/answers/691898161/,迭代器也是可迭代的.如果迭代器总是有__iter__方法是真的吗?

python methods iterator iterable python-3.x

15
推荐指数
2
解决办法
932
查看次数