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

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

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

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

Q&A

解決済

2回答

3254閲覧

map関数による「入力した文字列を分割して変数に代入する」が分からない。

Jishuku

総合スコア15

Python 3.x

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

0グッド

0クリップ

投稿2020/05/28 12:46

前提・実現したいこと

該当のソースコード1行目の文の構造がよく分かりません。
(input()の入力値は"2 3"です。)

意味としては
「input関数で入力された文字列をsplit関数によりスペースで分割してint型に変換して変数bとcに代入する」
と思われるのですが

同じ処理として
bc = input().split(' ')
b = int(bc[0])
c = int(bc[1])
なら分かるのですが。

疑問点
①splitの引数がスペース一文字として指定されていなくても正しい処理になるのはなぜか?
②map関数とは何なのか?
③bとcはカンマで区切られているがどういう理屈か?(他の言語で、2つの変数をカンマで区切ると一緒に宣言することができるという理屈なら知っているのですが)

該当のソースコード

Python3

1b, c = map(int, input().split()) 2 3print(b + c) 4

試したこと

map関数について検索して調べてみましたが、基礎知識が不十分だからか全体的に意味が分かりませんでした。
(リストが関係あるということは分かりました。配列、リストの概念自体の基本は分かります。)

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

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

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

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

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

guest

回答2

0

ベストアンサー

①splitの引数がスペース一文字として指定されていなくても正しい処理になるのはなぜか?

端的に言えば、仕様です。
スペース区切りとか改行区切りは頻繁に使うので、省略できることになっています。

②map関数とは何なのか?

リストの各要素を順番に変換して、新しいものを作ります。

...というのは厳密には嘘ですが、
そう解釈してもこの質問のコードは充分理解できますので、そういうことにしておきます。

イメージとしては、
map(int, ['1', '2']) を実行すると、各要素にint関数が適用され、[1, 2] になります。

③bとcはカンマで区切られているがどういう理屈か?

リストの分割代入です。

Python

1>>> a, b = [1, 2] 2>>> a 31 4>>> b 52

嘘について

二つの点で嘘を付きました。

  • mapはリストを返しません。イテレータを返します。
  • mapの第二引数はリスト以外のイテラブルも受け渡せます。

イテレータについての知識が無いと説明しづらいので、ここでは誤魔化した表現にしています。

投稿2020/05/28 13:03

LouiS0616

総合スコア35658

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

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

0

①splitの引数がスペース一文字として指定されていなくても正しい処理になるのはなぜか?

関数の機能が分からないときはリファレンスを見ます。
テキストシーケンス型 --- str — Python 3.8.3 ドキュメント

sep が指定されていないか None の場合、異なる分割アルゴリズムが適用されます。連続する空白文字はひとつのデリミタとみなされます。また、文字列の先頭や末尾に空白があっても、結果の最初や最後に空文字列は含まれません。よって、空文字列や空白だけの文字列を None デリミタで分割すると [] が返されます。

③bとcはカンマで区切られているがどういう理屈か?

b, c = [10,20]は、b=10; c=20と同じです。

②map関数とは何なのか?

mapは数学用語で「写像」です。関数みたいな物ですね。
リストの各要素に繰り返し同じ関数を適用します。
"10 20"split()すると["10", "20"]になります。
このリストの各要素にintを適用した新しいリスト[10, 20]を作ります。これがmapの機能です。

投稿2020/05/28 12:56

otn

総合スコア84423

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問