N
Neil Cerutti
s[i:j:t] = t (1) t must have the same length as the slice it is
replacing.
Why?
.... while True:
.... yield 'a'
....
This is infinite loop due to Python building a sequence out of
the iterator to check its length.
I think it might be more useful for
x[::2] = foo()
to result in an x of
['a', 1, 'a', 3, 'a', 5, 'a', 7, 'a', 9]
In other words, take (j-i)//k elements from t for abs(k) != 1.
A problem, though, arises when t is too short--the sequence
could be corrupted before an exception is thrown if you omit the
length check.
So you'd also have to define
x[::2] = 'aaa'
as resulting in
['a', 1, 'a', 2, 'a', 3, 5, 7, 9]
But perhaps that's just adding more useless complexity to the
already complex slicing rules (kudos for 'slice.indices', though
curses that the method isn't cross-referenced in more places).
replacing.
Why?
.... while True:
.... yield 'a'
....
foo()
x = range(10)
x[::2] = foo()
This is infinite loop due to Python building a sequence out of
the iterator to check its length.
I think it might be more useful for
x[::2] = foo()
to result in an x of
['a', 1, 'a', 3, 'a', 5, 'a', 7, 'a', 9]
In other words, take (j-i)//k elements from t for abs(k) != 1.
A problem, though, arises when t is too short--the sequence
could be corrupted before an exception is thrown if you omit the
length check.
So you'd also have to define
x[::2] = 'aaa'
as resulting in
['a', 1, 'a', 2, 'a', 3, 5, 7, 9]
But perhaps that's just adding more useless complexity to the
already complex slicing rules (kudos for 'slice.indices', though
curses that the method isn't cross-referenced in more places).