Single list rotation of the first half with the other half, including odd number of elements
up vote
0
down vote
favorite
l = [4,5,7,9,10,12]
def rotation(l,n):
return l[n:] + l[:n]
print rotation(l,3)
Let "l" be the above mentioned list, with the above code I am able to rotate the first half [4,5,7] with the other half [9,10,12], getting the desired output [9, 10, 12, 4, 5, 7]. However what I am trying to do and I cannot figure out, is in the case when we have an odd number of elements. Let's say l = [4,5,7,8,9,10,12] I want the odd number that is in the middle, in this case [8], to remain in the middle, and the first half to rotate with the last half, getting the output in this case [9,10,12,8,4,5,7]
Thanks in advance.
python list rotation
add a comment |
up vote
0
down vote
favorite
l = [4,5,7,9,10,12]
def rotation(l,n):
return l[n:] + l[:n]
print rotation(l,3)
Let "l" be the above mentioned list, with the above code I am able to rotate the first half [4,5,7] with the other half [9,10,12], getting the desired output [9, 10, 12, 4, 5, 7]. However what I am trying to do and I cannot figure out, is in the case when we have an odd number of elements. Let's say l = [4,5,7,8,9,10,12] I want the odd number that is in the middle, in this case [8], to remain in the middle, and the first half to rotate with the last half, getting the output in this case [9,10,12,8,4,5,7]
Thanks in advance.
python list rotation
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
l = [4,5,7,9,10,12]
def rotation(l,n):
return l[n:] + l[:n]
print rotation(l,3)
Let "l" be the above mentioned list, with the above code I am able to rotate the first half [4,5,7] with the other half [9,10,12], getting the desired output [9, 10, 12, 4, 5, 7]. However what I am trying to do and I cannot figure out, is in the case when we have an odd number of elements. Let's say l = [4,5,7,8,9,10,12] I want the odd number that is in the middle, in this case [8], to remain in the middle, and the first half to rotate with the last half, getting the output in this case [9,10,12,8,4,5,7]
Thanks in advance.
python list rotation
l = [4,5,7,9,10,12]
def rotation(l,n):
return l[n:] + l[:n]
print rotation(l,3)
Let "l" be the above mentioned list, with the above code I am able to rotate the first half [4,5,7] with the other half [9,10,12], getting the desired output [9, 10, 12, 4, 5, 7]. However what I am trying to do and I cannot figure out, is in the case when we have an odd number of elements. Let's say l = [4,5,7,8,9,10,12] I want the odd number that is in the middle, in this case [8], to remain in the middle, and the first half to rotate with the last half, getting the output in this case [9,10,12,8,4,5,7]
Thanks in advance.
python list rotation
python list rotation
edited Nov 10 at 13:33
asked Nov 10 at 13:14
Unix
3410
3410
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
up vote
1
down vote
accepted
def rotation(l,n):
if len(l) % 2 == 0:
return l[n:] + l[:n]
else:
return l[-n:] + [l[n]] + l[:n]
1
Thank you for clarification!@mehrdad-pedramfar
– Unix
Nov 10 at 14:21
add a comment |
up vote
1
down vote
If I get the point, this could work.
But I don't see the need to pass the second parameter to the method (unless you are looking for something different).
def rotation(l):
size = len(l)
n = size // 2
res = l[-n:] + l[:n] if size % 2 == 0 else l[-n:] + [l[n]] + l[:n]
return res
print(rotation([4,5,7,8,9,10])) #=> [8, 9, 10, 4, 5, 7]
print(rotation([4,5,7,8,9,10,12])) #=> [9, 10, 12, 8, 4, 5, 7]
1
Thanks for your time!
– Unix
Nov 10 at 14:22
add a comment |
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
1
down vote
accepted
def rotation(l,n):
if len(l) % 2 == 0:
return l[n:] + l[:n]
else:
return l[-n:] + [l[n]] + l[:n]
1
Thank you for clarification!@mehrdad-pedramfar
– Unix
Nov 10 at 14:21
add a comment |
up vote
1
down vote
accepted
def rotation(l,n):
if len(l) % 2 == 0:
return l[n:] + l[:n]
else:
return l[-n:] + [l[n]] + l[:n]
1
Thank you for clarification!@mehrdad-pedramfar
– Unix
Nov 10 at 14:21
add a comment |
up vote
1
down vote
accepted
up vote
1
down vote
accepted
def rotation(l,n):
if len(l) % 2 == 0:
return l[n:] + l[:n]
else:
return l[-n:] + [l[n]] + l[:n]
def rotation(l,n):
if len(l) % 2 == 0:
return l[n:] + l[:n]
else:
return l[-n:] + [l[n]] + l[:n]
answered Nov 10 at 14:13
mehrdad-pedramfar
3,44011232
3,44011232
1
Thank you for clarification!@mehrdad-pedramfar
– Unix
Nov 10 at 14:21
add a comment |
1
Thank you for clarification!@mehrdad-pedramfar
– Unix
Nov 10 at 14:21
1
1
Thank you for clarification!@mehrdad-pedramfar
– Unix
Nov 10 at 14:21
Thank you for clarification!@mehrdad-pedramfar
– Unix
Nov 10 at 14:21
add a comment |
up vote
1
down vote
If I get the point, this could work.
But I don't see the need to pass the second parameter to the method (unless you are looking for something different).
def rotation(l):
size = len(l)
n = size // 2
res = l[-n:] + l[:n] if size % 2 == 0 else l[-n:] + [l[n]] + l[:n]
return res
print(rotation([4,5,7,8,9,10])) #=> [8, 9, 10, 4, 5, 7]
print(rotation([4,5,7,8,9,10,12])) #=> [9, 10, 12, 8, 4, 5, 7]
1
Thanks for your time!
– Unix
Nov 10 at 14:22
add a comment |
up vote
1
down vote
If I get the point, this could work.
But I don't see the need to pass the second parameter to the method (unless you are looking for something different).
def rotation(l):
size = len(l)
n = size // 2
res = l[-n:] + l[:n] if size % 2 == 0 else l[-n:] + [l[n]] + l[:n]
return res
print(rotation([4,5,7,8,9,10])) #=> [8, 9, 10, 4, 5, 7]
print(rotation([4,5,7,8,9,10,12])) #=> [9, 10, 12, 8, 4, 5, 7]
1
Thanks for your time!
– Unix
Nov 10 at 14:22
add a comment |
up vote
1
down vote
up vote
1
down vote
If I get the point, this could work.
But I don't see the need to pass the second parameter to the method (unless you are looking for something different).
def rotation(l):
size = len(l)
n = size // 2
res = l[-n:] + l[:n] if size % 2 == 0 else l[-n:] + [l[n]] + l[:n]
return res
print(rotation([4,5,7,8,9,10])) #=> [8, 9, 10, 4, 5, 7]
print(rotation([4,5,7,8,9,10,12])) #=> [9, 10, 12, 8, 4, 5, 7]
If I get the point, this could work.
But I don't see the need to pass the second parameter to the method (unless you are looking for something different).
def rotation(l):
size = len(l)
n = size // 2
res = l[-n:] + l[:n] if size % 2 == 0 else l[-n:] + [l[n]] + l[:n]
return res
print(rotation([4,5,7,8,9,10])) #=> [8, 9, 10, 4, 5, 7]
print(rotation([4,5,7,8,9,10,12])) #=> [9, 10, 12, 8, 4, 5, 7]
answered Nov 10 at 14:11
iGian
2,2832620
2,2832620
1
Thanks for your time!
– Unix
Nov 10 at 14:22
add a comment |
1
Thanks for your time!
– Unix
Nov 10 at 14:22
1
1
Thanks for your time!
– Unix
Nov 10 at 14:22
Thanks for your time!
– Unix
Nov 10 at 14:22
add a comment |
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53239301%2fsingle-list-rotation-of-the-first-half-with-the-other-half-including-odd-number%23new-answer', 'question_page');
);
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password