我想将对象列表映射到包含列表的对象:
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)
这种映射最优雅的解决方案是什么?
我打电话给一个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?
所以,我有一个可重复的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错误的帖子了:
但这是关于"无法分配可迭代"的错误.我的问题是为什么python告诉我:
"list.py", line 6, in <module>
reversedlist = ' '.join(toberlist1)
TypeError: can only join an iterable
Run Code Online (Sandbox Code Playgroud)
我不知道我做错了什么!我正在关注这个帖子:
特别是这个答案:
>>> 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) 这个问题源于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)
由于不熟悉这个概念,我很困惑.谁能解释这种行为?已加星标的表达方式是否会根据其所在的方式而有所不同?
我想获得 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<E>是在,java.lang而Iterator<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构造.
如何实现Scala等效于Java Iterable<T>和C#IEnumerable<T>?基本上,我希望我的收藏是可映射,过滤等应集合类扩展什么特点以及是否有简便的方法(类似yield return与yield break在C#)来创建枚举?
我试图按顺序排序数组.但是代码的错误高于:
a=[]
a=map(int, input().split(' '))
a.sort()
print (a)
Run Code Online (Sandbox Code Playgroud)
帮帮我吧
我在研究 For/in 和 For/of 循环时遇到术语 Iterable 和 Enumerable。对象应该是可枚举的,我们必须使用 For/in 循环来循环对象的属性,并使用 For/of 来循环数组和字符串。我无法理解这两个术语。这两者有什么区别?
iterable ×10
python ×4
python-3.x ×4
java ×2
enumerable ×1
for-in-loop ×1
for-of-loop ×1
iterator ×1
javascript ×1
list ×1
mapstruct ×1
raku ×1
scala ×1
sorting ×1
spring ×1