Using nested lists and tables
__peter__ at web.de
Thu Oct 28 17:27:56 CEST 2010
> Thank you this is great; but I don't know how to modify this code so
> that when the user types the string 's' on the form in the app he sees
> what he is typing. So, this will be in GAE.
I've no idea what GAE is. In general the more precise your question is the
better the answers tend to be. Don't make your readers guess.
>>>> for row in range(max(len(c) for c in columns)):
>> ... print " | ".join(c[row] if len(c) > row else " "*len(c) for c
>> in columns)
> What is "c" here?
Sorry, I was trying to do too much in a single line.
result = [c for c in columns]
is a way to iterate over a list. It is roughly equivalent to
result = 
for c in columns:
Then, if columns is a list of lists of strings 'c' is a list of strings.
You normally don't just append the values as you iterate over them, you do
some calculation. For example
column_lengths = [len(c) for c in columns]
would produce a list containing the individual lengths of the columns.
A simpler and more readable version of the above snippet from the
interactive python session is
columns = [
['abc', 'abc', 'abc'],
["that's all, folks"]]
column_lengths = [len(column) for column in columns]
num_rows = max(column_lengths)
for row_index in range(num_rows):
row_data = 
for column in columns:
# check if there is a row_index-th row in the
# current column
if len(column) > row_index:
value = column[row_index]
# there is no row_index-th row for this
# column; use the appropriate number of
# spaces instead
value = " " * len(column)
print " | ".join(row_data)
More information about the Python-list