这是我的代码:
import math
print "Hey, lets solve Task 4 :)"
number1 = input ("How many digits do you want to look at? ")
number2 = input ("What would you like the digits to add up to? ")
if number1 == 1:
cow = range(0,10)
elif number1 == 2:
cow = range(10,100)
elif number1 == 3:
cow = range(100,1000)
elif number1 == 4:
cow = range(1000,10000)
elif number1 == 5:
cow = range(10000,100000)
elif number1 == 6:
cow = range(100000,1000000)
elif …
Run Code Online (Sandbox Code Playgroud) 可能重复:
Scala中的LINQ类似物
我正在寻找图表,它显示了IEnumerable的LINQ方法的Scala中的等价物:
有谁知道这样的"翻译"表吗?
您可能知道,实现__getitem__
方法会使类可迭代:
class IterableDemo:
def __getitem__(self, index):
if index > 3:
raise IndexError
return index
demo = IterableDemo()
print(demo[2]) # 2
print(list(demo)) # [0, 1, 2, 3]
print(hasattr(demo, '__iter__')) # False
Run Code Online (Sandbox Code Playgroud)
但是,对于正则表达式匹配对象,这不适用:
>>> import re
>>> match = re.match('(ab)c', 'abc')
>>> match[0]
'abc'
>>> match[1]
'ab'
>>> list(match)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: '_sre.SRE_Match' object is not iterable
Run Code Online (Sandbox Code Playgroud)
值得注意的是,该__iter__
方法中没有抛出此异常,因为该方法甚至没有实现:
>>> hasattr(match, '__iter__')
False
Run Code Online (Sandbox Code Playgroud)
那么,如何在__getitem__
不使类可迭代的情况下实现呢?
许多Java框架类实现Iterable
,但String
不实现.迭代a中的字符是有意义的String
,就像可以迭代常规数组中的项一样.
有没有理由String
不实施Iterable
?
Python 3.6.1中的一个简单片段:
import datetime
j = iter(datetime.datetime.now, None)
next(j)
Run Code Online (Sandbox Code Playgroud)
收益:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
Run Code Online (Sandbox Code Playgroud)
而不是打印now()
每个经典行为next()
.
我已经看到类似的代码在Python 3.3中工作,我在版本3.6.1中遗漏了什么或者有什么变化?
我想知道为什么这个Collection.addAll()
方法只接受其他Collection
s但不接受Iterable
s.这是为什么?
对Iterable
s 做任何类似的方法?
获取OrderedDict
Python 3 第一项的最短方法是什么?
我最好的:
list(ordered_dict.items())[0]
Run Code Online (Sandbox Code Playgroud)
相当漫长而丑陋.
我能想到:
next(iter(ordered_dict.items())) # Fixed, thanks Ashwini
Run Code Online (Sandbox Code Playgroud)
但它不是很自我描述.
有更好的建议吗?
Iterables提供了两种方法getLast
public static <T> T getLast(Iterable<T> iterable);
public static <T> T getLast(Iterable<T> iterable, @Nullable T defaultValue);
Run Code Online (Sandbox Code Playgroud)
但只有一个 getFirst
public static <T> T getFirst(Iterable<T> iterable, @Nullable T defaultValue);
Run Code Online (Sandbox Code Playgroud)
是否存在破坏对称性的设计/实施原因?
我如何java.lang.Iterable
从一个Set
或一个集合中获得一个List
?谢谢!
iterable ×10
java ×5
python ×4
collections ×2
api-design ×1
c# ×1
datetime ×1
guava ×1
ienumerable ×1
indexing ×1
iterator ×1
linq ×1
list ×1
loops ×1
python-3.6 ×1
python-3.x ×1
scala ×1
string ×1