
No.5ベストアンサー
- 回答日時:
> 日本語に訳すとそれぞれどのような意味でしょうか。
> (i[0] * ''.join(map(str, i + ['\n'])), end='') を教えてください。
まず、ちとPythonはおかしなトコがあって、文字列 -> リストの変換は想定通りなんだけど、逆にリスト -> 文字列の変換はヘンな書き方になる。
言い換えると、「変換関数」同士で対称性がない、って事だ。
リスト -> 文字列の変換は次のようになる。
''.join(リスト)
例えば['a', 'b', 'c']と言う文字列のリストから文字列を生成するには次のように書く。
''.join(['a', 'b', 'c'])
=> 'abc'
Pythonのリストと文字列を相互に変換する方法まとめ:
https://www.headboost.jp/python-strings-into-a-l …
一方、これを素直に使えるには、joinメソッドに与えるリストは「文字列のリスト」じゃないとならない。
しかし、余題のリストは整数のリストだ。
例: [2,3,4]
従って、整数のリストを文字列のリストに変換しないといけない。
整数を文字列に変換するのはPythonでは簡単に行える。
例:
str(2)
=> '2'
つまり、整数のリスト[2,3,4]の要素を全部文字列に変換するにはマッピング関数mapを使って各要素を文字列に直せばいい。
例:
map(str, [2, 3, 4])
=> <map object at 0x7fd75dfc3160>
返り値はイテラブルになっているが構わない。listを使ってリスト化すると文字列のリストが得られている。
Pythonのイテラブルとは何かを現役エンジニアが解説【初心者向け】:
https://magazine.techacademy.jp/magazine/28147
Pythonのmap関数の使い方を徹底解説初心者向け:
https://www.modis.co.jp/candidate/insight/column …
つまり、
''.join(map(str, [2, 3, 4]))
=> '234'
と文字列を生成するが、ケツに改行文字を付加しておきたい。
そこで、mapに与えるリストを次のようにする。
''.join(map(str, [2, 3, 4] + ['\n']))
=> '234\n'
[2, 3, 4] + ['\n'] は [2, 3, 4, '\n'] と言うリストを返すので、これを利用して最終的には改行文字付きの文字列にしてしまう。
さて、リスト[2, 3, 4]はデータ
[
[2,3,4],
[1,7,8],
[3,4,5]
]
から引っこ抜いてきたリストだ。データの最初のリストだな。
要はデータを順次処理してリストを1つづつ引っこ抜いてくればイイ、ってこった。
題意から言うと、各リストの先頭は「ページ数」じゃないといけない。
つまり、データからリストを順次引っこ抜いてきて、そのリストをiと表現すれば、
i[0]
は常に「ページ数」と言う意味になる。
これを利用して、Pythonのポリモーフィズム
Pythonで分かる!ポリモーフィズムとは?使い方について解説:
https://www.sejuku.net/blog/90417
に従って「文字列の掛け算」を実行する。
例えば文字列が'234\n'だとして、
2 * '234\n'
=> '234\n234\n'
3 * '234\n'
=> '234\n234\n234\n'
となる。Pythonの文字列では、「掛けた分だけ」同じ文字列が結合されていく。
これを利用すれば、
各リストの先頭 * ''.join(map(str, 各リスト + ['\n']))
で、各リストの先頭の数の分だけ同じ文字列を連結した文字列が生成出来る。
あとは、Pythonのprintはデフォルトでは勝手に改行文字を付加するが、文字列本体に改行文字がある場合、これが邪魔になるケースがある(今回のケースだ)。
そんな時には、オプショナル引数で、endに''を与えるとprint側で改行文字を付ける事がない。
No.4
- 回答日時:
No.1です。
PHPはできません。
#!/usr/bin/perl
my @x = ([2,3,4],[1,7,8],[3,4,5]);
for (my $i=0; $i < 3; $i++){
for (my $j=0;$j < $x[$i][0];$j++){
print"$x[$i][0]$x[$i][1]$x[$i][2]\n";
}
}
No.3
- 回答日時:
Python(#2の修正):
[print(i[0] * ''.join(map(str, i + ['\n'])), end='') for i in [[2, 3, 4], [1, 7, 8], [3, 4, 5]]]
ありがとうございます。
日本語に訳すとそれぞれどのような意味でしょうか。
(i[0] * ''.join(map(str, i + ['\n'])), end='') を教えてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP プログラミング教えてください。 3 2022/10/12 10:37
- Microsoft ASP プログラミング関係で質問です。 3 2022/10/11 16:06
- C言語・C++・C# このプログラミングの問題を教えてほしいです。 キーボードからデータ数nとn個のデータを入力し、平均値 3 2022/12/19 22:51
- その他(プログラミング・Web制作) プログラミングについて(Python) 添付した画像はC言語で簡単に作ったソースで、1つの配列に5つ 3 2022/09/10 19:15
- C言語・C++・C# このプログラミングの問題を教えて欲しいです。 キーボードから整数kを入力し、kが配列aの中に何個存在 2 2022/12/19 22:50
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- C言語・C++・C# 至急お願いします。C言語で.imgのファイルを読み込んで1バイトづつ出力するプログラムを作りたいので 3 2023/01/16 22:49
- その他(プログラミング・Web制作) プログラミング python pandas 固定長データの出力 2 2022/08/16 11:22
- その他(プログラミング・Web制作) python pandas リストをデータフレームに変換 1 2022/09/27 17:04
- Java Java、配列の問題を教えて欲しいです。 ・日、月、火、水、木、金、土 ・各曜日の英語 を2次元配列 2 2023/07/10 19:14
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Javaで文字と数字が混ざったも...
-
配列数を超えてアクセスしたと...
-
配列の中に複数存在する数がい...
-
C言語でunsigned char配列を連...
-
配列をセッションに割り当てた後で
-
配列について
-
同じ配列またはクラスを、2回...
-
sqlparamaterでIN句を使いたい。
-
【Java】ある数列から、素数を...
-
セッションを使ったint型の値の...
-
『args[]』とは?
-
[Ljava.lang.Stringってなんですか
-
大きさがわからない配列
-
java StringとString[]の違い
-
hit&blow
-
JavaBeansの配列の値取得方法に...
-
java 大文字と小文字を入れ替える
-
n番目に大きな値を探索する
-
java
-
javaでの文字列からの数字抽出
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Javaで文字と数字が混ざったも...
-
フローチャート
-
この警告はどうすれば?
-
[Ljava.lang.Stringってなんですか
-
配列で、値の入っている要素数...
-
C#で動的配列Listの中身をListB...
-
配列の中に複数存在する数がい...
-
セッションを使ったint型の値の...
-
【C#】ハッシュテーブル(連想...
-
javaについて
-
javaでの文字列からの数字抽出
-
配列について
-
javaで大容量テキストファイル...
-
配列数を超えてアクセスしたと...
-
【Ajax通信&Java】配列の受け取...
-
『args[]』とは?
-
ArrayListからBean配列に値をセ...
-
C言語でunsigned char配列を連...
-
strutsで2次元配列をやりとりす...
-
javamailで複数人にメールを送...
おすすめ情報
phpのchunk等を使って出力しても構いません