7

I do not know much about python so i apologize if my question is a very basic one.

Let's say i have a list

lst = [1,2,3,4,5,6,7,8,9,10]

Now what i want to know is that if there is any way to write the following piece of code in python without using range() or xrange():

for i in lst:
    for j in lst after element i: '''This is the line i want the syntax for'''
        #Do Something

The second loop is to access elements after the element i i.e., if i = 3, j would have to loop through from 4 to 10, so the pairs of numbers if i and j are printed would be (1,2)..(1,10), (2,3)...(2,10), (3,4)..(3,10) etc.

I have no idea what to search for or what query to type on any search engine.
Any help would be much appreciated.

6
  • 1
    Possible duplicate of Iterate over pairs in a list (circular fashion) in Python. Do you want to iterate with the indices (0, 1), (1, 2), (2, 3) or (0, 1), (2, 3), (4, 5)? Commented Nov 17, 2015 at 14:36
  • Also is there a particular reason you don't want to use range? Is it for the sake of challenge/curiosity or something else? Commented Nov 17, 2015 at 14:38
  • @SuperBiasedMan It was just out of curiosity nothing more. Commented Nov 17, 2015 at 14:44
  • 1
    @SuperBiasedMan No i want to iterate with (0,1)...(0,10), then (1,2)...(1,10), then (2,3)..(2,10), this sort of looping. Commented Nov 17, 2015 at 14:49
  • Ah, apologies. The link may be helpful but it's not a duplicate then. Commented Nov 17, 2015 at 14:56

3 Answers 3

8

This is what list slicing is about, you can take part of your list from i'th element through

lst[i:]

furthermore, in order to have both index and value you need enumerate operation, which changes the list into list of pairs (index, value)

thus

for ind, i in enumerate(lst):
    for j in lst[ind+1: ]: 
        #Do Something
Sign up to request clarification or add additional context in comments.

1 Comment

Thank you list slicing is the answer i was looking for!
7

It looks like you might want to use enumerate():

for index, item in enumerate(lst):
    for j in lst[index+1:]:
        #Do Something

4 Comments

lst[index+1] is not a list, it is an element, furthermore, enumerate does not work this way around
Also, I get the order of index and item in enumerate wrong every time I try to use it. It's like trying to get a USB in on the first try...
@turbulencetoo does that also mean that sometimes you get the order right but it still doesn't work so you reflexively try the other way?
I learned something new from your answer. I really appreciate it!
0

can't we do it like simply:

for i in range(len(lst)):  
     for j in lst[i+1:]:  
        #Do Something

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.