タプルを左シフトする効率的な方法を探しています。
私がこれまでにしたこと:
def leftShift(tup, n):
length = len(tup)
if length != 0:
n = n % length
else:
return tuple()
return tup[n:] + tup[0:n]
sample = (1,2,3,4)
sample2 = ()
print(leftShift(sample, 5)) #prints (2, 3, 4, 1)
print(leftShift(sample, 1)) #prints (2, 3, 4, 1)
print(leftShift(sample, 15)) #prints (4, 1, 2, 3)
print(leftShift(sample, 3)) #prints (4, 1, 2, 3)
print(leftShift(sample2, 4)) #prints ()
シフトする場所の数は、2番目の引数として指定されます。
効率的ですか?よりPython的な方法でコーディングできますか?
そして教えてください、それは...
length = len(tup)
if length != 0:
n = n % length
より効率的
if len(tup) != 0:
n = n % len(tup)
?
つまり、len(tup)O(1)ですか、それとも後で使用するために覚えておく必要がありますか?