|
28
|
| James Brooks · 技术社区 · 16 年前 |
|
1
42
一些测试:
|
|
|
2
18
这是一个简单的版本。就像哈斯克尔的一样,它很懒。
这需要你使用
例子:
虽然不是一行程序,但下面的版本不需要您调用
(感谢@eli korvigo的改进。) |
|
|
3
6
建立公认的答案并使用
Python 3:
Python 2:
|
|
|
4
5
|
|
|
5
3
一个一行、可内联的解决方案(支持v2/v3、迭代器、使用标准库和单个生成器理解):
|
|
|
6
2
稍微改变一下以裁剪最后一个,我认为一个好的解决方案是:
对于支持切片(列表、字符串、元组)的对象,我们可以执行以下操作:
现在只需要分配正确的方法:
我想你可以再擦亮一点。 |
|
|
7
2
我在尝试分割批处理时也遇到了这个问题,但是在流的生成器上执行,所以这里的大多数解决方案都不适用,或者在python 3中不起作用。 对于仍在这方面遇到困难的人们,下面是使用itertools的一般解决方案:
|
|
|
8
1
为什么不这样做呢?看起来像你的
实际上,它只会从解决方案的切片中去掉不必要的步距。:) |
|
9
1
这是一个对list和generator都有效的答案:
|
|
|
10
0
下面是处理列表与迭代器的方法:
|
|
11
0
|
|
|
12
-1
这就行了
在那里,它是一些可以接受的 例子:
让我们把这个分解
如您所见,切片中的最后一个数字是指定用于拾取项目的间隔。您可以阅读有关使用扩展切片的更多信息 here . 这个 zip 函数从第一个iterable中获取第一个item,并将其与第一个item和第二个iterable组合。然后,zip函数对第二个和第三个项执行相同的操作,直到其中一个iterable值用完为止。 结果是一个迭代器。如果需要列表,请对结果使用list()函数。 |
|
|
13
-1
如果你想要一个解决方案
这就是诀窍:
它通过查看迭代器中的下一个值并将其作为第一个值传递给生成器来工作。(
偷看的台阶会升高
这将成批处理来自stdin的行:
我发现这对于处理大量数据和将结果批量上传到外部存储非常有用。 |