質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

2回答

448閲覧

”print関数”, ”max関数の引数” の使い方

hamberger

総合スコア24

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2018/06/17 07:13

下のプログラムの

col_width[c] = max(col_width[c], len(row))
print(table_data[c][r].rjust(col_width[c]), end=' ') print()

について、質問です。
①maxの引数の書き方(forループでtable_data[c]というリスト内の要素にアクセスしているのはわかります。ただ、col_width[c], len(row) のように2つ引数を取った時の動きがよくわかりません。)
②print関数を二つ書いているのに1度しか表示されないのはなぜか

以下は全体のプログラムです。内容はリスト内の要素をrjustで並び変えるものです。質問個所に対応する番号をつけています。
よろしくお願いします。

table_data = [['apples', 'oranges', 'cherries', 'banana'], ['Alice', 'Bob', 'Carol', 'David'], ['dogs', 'cats', 'moose', 'goose']] def print_table(table_data): col_n = len(table_data) row_n = len(table_data[0]) col_width = [0] * col_n for c in range(col_n): for row in table_data[c]: col_width[c] = max(col_width[c], len(row))#----1 for r in range(row_n): for c in range(col_n): print(table_data[c][r].rjust(col_width[c]), end ='')#----2 print()#----2 print_table(table_data)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

①maxの引数の書き方

Python

1>>> arg = [1, 2, 3] 2>>> max(arg) 33 4>>> 5>>> max(1, 2, 3) 63

上記のうち、どちらの書き方でも良いです。


②print関数を二つ書いているのに1度しか表示されないのはなぜか

print()何も表示せずに改行します。(厳密には改行文字を出力してますが)
これを消して動かしてみると、何をしているのか理解できるかと。

Python

1for r in range(row_n): 2 for c in range(col_n): 3 print(table_data[c][r].rjust(col_width[c]), end ='')#----2 4 # print()#----2

投稿2018/06/17 07:31

LouiS0616

総合スコア35660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hamberger

2018/06/17 08:27

max(col_width[c], len(row)) の第1引数がtable_dataのリストをきちんと参照しているのが納得できなくて悩んでおります。もちろんエラーが出るのはわかるのですが、max(table_data[c], len(row)) と書きたくなってしまいます。
LouiS0616

2018/06/17 08:38 編集

col_widthは長さcol_nのリストで、要素は全て正の整数です。 ループ内で print(col_width) するなどして動きを見てみてはいかがでしょうか。
hamberger

2018/06/17 09:32

アドバイスありがとうございます。実際に動かしてみて下のように書いたほうがわかりやすいと思い、col_width[c] = len( max( table_data[c], key =len) )  と変更しました。
guest

0

2. 組み込み関数 — Python 3.6.5 ドキュメント

row_n = len(table_data[0])
for r in range(row_n):

サイズ0の配列の長さ分のループが1回でも実行されるとなぜ思った?

投稿2018/06/17 07:18

tkturbo

総合スコア5572

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問