标签: iterable

mapstruct 将可迭代映射到不可迭代

我想将对象列表映射到包含列表的对象:

public class Group {
    private List<Person> people;
}

public class Person {
    private String name;
}
Run Code Online (Sandbox Code Playgroud)

我尝试创建一个这样的映射器:

Group toGroup(List<Person> people);
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

error: Can't generate mapping method from iterable type to non-iterable type.
Run Code Online (Sandbox Code Playgroud)

这种映射最优雅的解决方案是什么?

spring iterable mapstruct

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

"Iterable <Element>无法强制转换为List <Element>" - 不是`List`是一种`Iterable`吗?

我打电话给一个getElements返回的方法Iterable<Element>.

我这样做了:

List<Element> elements = (List<Element>) getElements();
Run Code Online (Sandbox Code Playgroud)

这会生成错误:

java.lang.ClassCastException: com.utesy.Element$3 
cannot be cast to java.util.List
Run Code Online (Sandbox Code Playgroud)

我以为List是一种Iterable

java iterable list classcastexception

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

懒惰地在Python中转置一个列表

所以,我有一个可重复的3元组,懒得生成.我试图找出如何将其转换为3个迭代,分别由元组的第一,第二和第三个元素组成.但是,我希望这可以懒得做.

因此,举例来说,我希望[(1, 2, 3), (4, 5, 6), (7, 8, 9)]将变成[1, 4, 7],[2, 5, 8],[3, 6, 9].(除非我想要iterables而不是列表.)

标准zip(*data)习惯用法不起作用,因为参数解包扩展了整个迭代.(您可以通过注意zip(*((x, x+1, x+2) for x in itertools.count(step=3)))挂起来验证这一点.)

到目前为止,我提出的最好的是以下内容:

def transpose(iterable_of_three_tuples):
    teed = itertools.tee(iterable_of_three_tuples, 3)
    return map(lambda e: e[0], teed[0]), map(lambda e: e[1], teed[1]), map(lambda e: e[2], teed[2])
Run Code Online (Sandbox Code Playgroud)

这似乎有效.但它似乎不像干净的代码.而且它做了很多看似不必要的工作.

python iterable lazy-evaluation python-3.x

11
推荐指数
1
解决办法
230
查看次数

"只能加入一个可迭代的"python错误

我已经看过这篇关于可迭代python错误的帖子了:

"只能迭代"Python错误

但这是关于"无法分配可迭代"的错误.我的问题是为什么python告诉我:

 "list.py", line 6, in <module>
    reversedlist = ' '.join(toberlist1)
TypeError: can only join an iterable
Run Code Online (Sandbox Code Playgroud)

我不知道我做错了什么!我正在关注这个帖子:

允许不使用str.split()的字符串的反向字顺序

特别是这个答案:

>>> s = 'This is a string to try'
>>> r = s.split(' ')
['This', 'is', 'a', 'string', 'to', 'try']
>>> r.reverse()
>>> r
['try', 'to', 'string', 'a', 'is', 'This']
>>> result = ' '.join(r)
>>> result
'try to string a is This'
Run Code Online (Sandbox Code Playgroud)

并适配代码使其具有输入.但当我跑它时,它说上面的错误.我是一个完整的新手所以,请你告诉我错误信息的含义以及如何解决它.

代码如下:

import re
list1 = input ("please enter the list you want to print")
print …
Run Code Online (Sandbox Code Playgroud)

python iterable python-3.x

11
推荐指数
1
解决办法
3万
查看次数

赋值语句左侧与右侧的Star*运算符

这个问题源于PEP 448- 其他解包通用化,并且据我所知(并且没有后端移植到2.x),它存在于Python 3.5中.具体而言,在" 缺点 "一节中,注意到以下内容:

虽然*elements, = iterable原因elements是一list, elements = *iterable,导致elements成为一个tuple.造成这种情况的原因可能会让那些不熟悉这种结构的人感到困惑.

确实如此,因为iterable = [1, 2, 3, 4]第一种情况产生了list:

>>> *elements, = iterable
>>> elements
[1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)

而对于第二种情况tuple,创建了一个:

>>> elements = *iterable,
>>> elements
(1, 2, 3, 4)
Run Code Online (Sandbox Code Playgroud)

由于不熟悉这个概念,我很困惑.谁能解释这种行为?已加星标的表达方式是否会根据其所在的方式而有所不同?

python iterable python-3.x iterable-unpacking

11
推荐指数
1
解决办法
2272
查看次数

在 Raku 中获取惰性 Seq 的最后一个元素

我想获得 Raku 中惰性但有限的 Seq 的最后一个元素,例如:

my $s = lazy gather for ^10 { take $_ };
Run Code Online (Sandbox Code Playgroud)

以下内容不起作用:

say $s[* - 1];
say $s.tail;
Run Code Online (Sandbox Code Playgroud)

这些可以工作,但看起来不太惯用:

say (for $s<> { $_ }).tail;
say (for $s<> { $_ })[* - 1];
Run Code Online (Sandbox Code Playgroud)

在保持原始 Seq 惰性的同时,最惯用的方法是什么?

iterable lazy-evaluation lazy-sequences raku

11
推荐指数
2
解决办法
389
查看次数

为什么不同的包中有Iterable <E>和Iterator <E>?

Iterable<E>是在,java.langIterator<E>java.util.这有充分的理由还是仅仅是一个糟糕设计的神器?

这似乎很奇怪,因为唯一Iterable<E>有益的是提供一个Iterator<E>.

编辑:一个潜在的原因是因为(then-)新引入的每个循环.我想我的问题是,它们是否相同?

for(Object o : collection)
    ...
vs
for( Iterator iter = collection.iterator(); iter.hasNext(); ) {
    o = iter.next();
    ...
Run Code Online (Sandbox Code Playgroud)

如果它们是,那么仍然无法解释为什么这两个类在不同的包中,因为编译器必须导入java.util才能使用该Iterator构造.

java iterator iterable

10
推荐指数
3
解决办法
5016
查看次数

实现Iterable

如何实现Scala等效于Java Iterable<T>和C#IEnumerable<T>?基本上,我希望我的收藏是可映射,过滤等应集合类扩展什么特点以及是否有简便的方法(类似yield returnyield break在C#)来创建枚举?

iterable scala

10
推荐指数
1
解决办法
5647
查看次数

获取属性错误:'map'对象没有属性'sort'

我试图按顺序排序数组.但是代码的错误高于:

a=[]
a=map(int, input().split(' '))
a.sort()
print (a)
Run Code Online (Sandbox Code Playgroud)

帮帮我吧

python sorting iterable python-3.x

10
推荐指数
1
解决办法
1万
查看次数

JS 中可迭代和可枚举有什么区别?我正在经历 For/of 和 For/In 循环,这些术语经常出现

我在研究 For/in 和 For/of 循环时遇到术语 Iterable 和 Enumerable。对象应该是可枚举的,我们必须使用 For/in 循环来循环对象的属性,并使用 For/of 来循环数组和字符串。我无法理解这两个术语。这两者有什么区别?

javascript iterable enumerable for-in-loop for-of-loop

10
推荐指数
2
解决办法
4689
查看次数