How to return list of lists

E

eternaltheft

Hi guys, I'm having a lot of trouble with this.

My understanding of python is very basic and I was wondering how I can return this table as a list of lists.

1 2 3 4 5
3 4 5 6
5 6 7
7 8
9

The function is
def Table(n):
Then how would I make it that when the value of n is 4 it returns [[1, 2, 3], [3, 4], [5]].

Thank you
 
W

Wolfgang Maier

Hi guys, I'm having a lot of trouble with this.

My understanding of python is very basic and I was wondering how I can
return this table as a list of lists.
1 2 3 4 5
3 4 5 6
5 6 7
7 8
9

The function is
def Table(n):
Then how would I make it that when the value of n is 4 it returns [[1, 2, 3], [3, 4], [5]].

Thank you

First of all, state your question precisely!
I have no idea why with n=4 you would want to return that!
Second, the solution of this sort of problem lies in list comprehensions
combined with range(). Read up on those topics! Especially comprehensions
are so fundamental to the language that you have know about them before you
embark on any serious programming efforts.
Best,
Wolfgang
 
E

Eternaltheft

<eternaltheft <at> gmail.com> writes:


Hi guys, I'm having a lot of trouble with this.

My understanding of python is very basic and I was wondering how I can

return this table as a list of lists.
The function is
def Table(n):
Then how would I make it that when the value of n is 4 it returns [[1, 2,

3], [3, 4], [5]].
Thank you



First of all, state your question precisely!

I have no idea why with n=4 you would want to return that!

Second, the solution of this sort of problem lies in list comprehensions

combined with range(). Read up on those topics! Especially comprehensions

are so fundamental to the language that you have know about them before you

embark on any serious programming efforts.

Best,

Wolfgang

Ah sorry the task is to make a function for this:
def tTable(n):
tTable(n),even n, returns the initial triangular n-1 x n-1(triangular table i posted before) table as a list of lists. For example, tTable(4) returns [[1, 2, 3], [3, 4], [5]].

Sorry if i was a bit vague, but i don't know how to explain it any better :(. And thanks for the tips! I will definitely read up on it when i get the time.
 
R

rusi

 <eternaltheft <at> gmail.com> writes:


Hi guys, I'm having a lot of trouble with this.
My understanding of python is very basic and I was wondering how I can

return this table as a list of lists.


1  2       3       4       5
3  4       5       6
5  6       7
7  8
9
The function is
def Table(n):
Then how would I make it that when the value of n is 4 it returns [[1, 2,
3], [3, 4], [5]].
Thank you

First of all, state your question precisely!
I have no idea why with n=4 you would want to return that!
Second, the solution of this sort of problem lies in list comprehensions
combined with range(). Read up on those topics! Especially comprehensions
are so fundamental to the language that you have know about them before you
embark on any serious programming efforts.
Best,
Wolfgang

As Wolfgang says -- dunno why the 4 (my code below works for 3)
And I wonder whether you are making us do your homework.
Still heres something to start you off

def row(max,n): return range(2*n-1, max+n)
def tri(max): return [row(max,i) for i in range(1,max+1)]
tri(3) [[1, 2, 3], [3, 4], [5]]
 
E

Eternaltheft

Definitely not, like i said I'm having trouble doing it, you didn't have to write a code for me, i just need an explanation on how to do it. sorry if it felt like i was trying to get my homework done
 
W

Wolfgang Maier

Eternaltheft said:
Ah sorry the task is to make a function for this:
def tTable(n):
tTable(n),even n, returns the initial triangular n-1 x n-1(triangular
table i posted before) table as a
list of lists. For example, tTable(4) returns [[1, 2, 3], [3, 4], [5]].

Sorry if i was a bit vague, but i don't know how to explain it any better
:(. And thanks for the tips! I will
definitely read up on it when i get the time.

So if you posted this before, why are you asking again?
Could you provide a link to the post? Otherwise, I guess I'll look for it
when I get the time ;)
 
E

Eternaltheft

Haha i'm confused? im guessing you mean the triangular table i said i posted before? its this one

1 2 3 4 5
3 4 5 6
5 6 7
7 8
9

this was the table in my original post
 
E

Eternaltheft

Haha i'm confused? im guessing you mean the triangular table i said i posted before? its this one



1 2 3 4 5

3 4 5 6

5 6 7

7 8

9



this was the table in my original post
omg im an idiot, i didn't mention that the original table is the triangular table..
 
S

Steven D'Aprano

Hi guys, I'm having a lot of trouble with this.

My understanding of python is very basic and I was wondering how I can
return this table as a list of lists.

1 2 3 4 5
3 4 5 6
5 6 7
7 8
9


Do you know how to build lists of numbers?

a = [1, 2, 3, 4, 5]
b = [3, 4, 5, 6]
c = [5, 6, 7]
d = [7, 8]
e = [9]


Now put them in a list:

table = [a, b, c, d, e]
print table


Got that so far? Now let's see how you might do the same thing without
typing up the inner lists by hand. For that, you want the range()
function.

a = range(1, 6) # 1 is included, 6 is excluded.
b = range(3, 7)
c = range(5, 8)
# etc.


Now let's do it without the temporary variables a, b, c, d, e.

This time, start with the outer list, only with nothing in it. Then fill
it using the range function.

table = []
table.append(range(1, 6))
table.append(range(3, 7))
# etc.


Now let's put this in a function:


def table(n):
# Returns a triangular table (list of lists).
# So far, we ignore n and hard-code the table. We'll fix this later.
table = []
table.append(range(1, 6))
table.append(range(3, 7))
# etc.
return table


You're about halfway there now. The easy half. You get to do the hard
half :)


You need to think about how to turn a series of repeated appends into a
loop, either a while loop or a for loop. I recommend you use a for-loop.

Start by answering these questions:

* if the argument to the function, n, is 4, how many rows and how many
columns will the table have?

* if n is 5, how many rows and columns will the table have?

* in general, for some value of n, what will be the first row?

* turn that into a call to range. Remember that if you call range with
two arguments, the first argument is included, the second is excluded:
range(5, 9) => [5, 6, 7, 8]

* what will the second row be? Hint: the *first* number in the second row
will be the first number of the first row PLUS TWO; the *last* number in
the second row will be ... what?

* turn that into a call to range. Can you see the pattern for how each
call to range will vary from the last?

* this suggests you want a for loop:

for row number 1, 2, 3, ...
table.append(make a row)

Obviously that's not real Python code. You need to write the Python code.


Write some code, and if you run into trouble, come back and ask for help.



Good luck!
 
E

Eternaltheft

Thank you so much for the help, I get it now :D. I really appreciate you taking the time to explain it into detail for me
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,482
Members
44,901
Latest member
Noble71S45

Latest Threads

Top