简体   繁体   中英

Get last and first n elements of a list

Need an answer where numbers to leave from the start and end can easily be adjusted. Thanks.

This is my code:

ls = [1,2,3,4,5,6]
# desired output: [1,2,5,6]

#Tried the following:
ls[-2:2:1]

ls[2:4:-1]

# Both return empty list

yes you can do slicing like ls[:2] + ls[-2:] to get the desired output

Code:-

#   [ 0, 1, 2, 3, 4, 5]   for positive indices
lis=[ 1, 2, 3, 4, 5, 6]
#   [-6,-5,-4,-3,-2,-1]  for negative indices
# desired output: [1,2,5,6]

#Some options are
print(lis[:2]+lis[4:])
print(lis[:2]+lis[-2:])
print(lis[-6:-4]+lis[-2:])
print(lis[-6:-4]+lis[4:])

Output:-

[1, 2, 5, 6]
[1, 2, 5, 6]
[1, 2, 5, 6]
[1, 2, 5, 6]

I read the documentation and tried some codes to see why your code fails.

clearly as shown in the documentation there is no problem with the step of slicing being a negative number. I think the problem is that you can not reach the end of the list (or the beginning if your step is negative) and start from the other side.

And for code to work as you want, you can use ls[:2] + ls[-2:] as suggested in the comments

If you don't mind modifying the original list in-place you can also delete the slice in the middle:

del ls[2:4]

ls would then become:

[1, 2, 5, 6]

Demo: https://replit.com/@blhsing/StylishFuzzyCopyrightinfringement

You can parameterize the code to include how many elements you want from the start and end. For eg -

ls = [1,2,3,4,5,6]
# desired output: [1,2,5,6]
start = 2 #no of elements needed from start
end = 1 #no of elements needed from end

ls[:start] + ls[-end:] #gives you desired output

Try ls[2:-2] instead of ls[-2:2]

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM