擅长:python、mysql、java
<blockquote>
<blockquote>
<p>How can I write this in a simpler way?</p>
</blockquote>
</blockquote>
<p>用<code>self[i]</code>代替<code>self.__cont_[i]</code>。你知道吗</p>
<blockquote>
<p>Do I really need the lines self.__cont_ and self.__len_?</p>
</blockquote>
<p>不需要。只需要使用引用列表的常规方法,例如:<code>[]</code>和<code>len()</code>。你知道吗</p>
<p>另外,您可以选择让<code>.__floordiv__()</code>返回<code>divlist</code>而不是<code>list</code>,这样您就可以继续对结果进行操作。你知道吗</p>
<pre><code>class divlist(list):
def __floordiv__(self, other):
""" Adds the ability to floor divide list's indices """
if (isinstance(other, int) or isinstance(other, float)):
return [i // other for i in self]
elif (isinstance(other, list)):
# DANGER: data loss if len(other) != len(self) !!
return [i // j for i,j in zip(self, other)]
else:
raise ValueError('Must divide by list, int or float')
X = divlist([1,2,3,4])
assert X == [1, 2, 3, 4]
assert X // 2 == [0, 1, 1, 2]
assert X // [1,2,3,4] == [1, 1, 1, 1]
assert X // X == [1, 1, 1, 1]
</code></pre>