• ベストアンサー

Python(初心者)

Pythonを始めようと思っています。 Pythonについてきた『Python チュートリアル』を読んだのですが リスト、クラス、スライス、タプル、辞書をどういう時に使ったらいいのか良く分かりませんでした。 どういう時に活用したらいいのか教えてください。

  • Python
  • 回答数4
  • ありがとう数8

質問者が選んだベストアンサー

  • ベストアンサー
  • eroermine
  • ベストアンサー率18% (83/444)
回答No.4

とりあえず、 list: 配列が無いので代わりに class: グローバル変数が無いので状態を保存するときに必須。クロージャ-と関係が深いがそのことはとりあえず知らなくて良い。 slice: 文字列の部分使用 tuple: 構造体 辞書: 簡易オンメモリデータ-ベース

osumofand
質問者

お礼

ご回答ありがとうございました。 参考になりました。

その他の回答 (3)

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.3

>「Pythonは教育用言語として開発されました」と言うお題目 作者はそれを否定していますけど。 結果としてプログラミングの入門者にもとっつきやすいものになったということと、 最初からそのようになることを意図したのとは別でしょう。 で、質問者さんがプログラミングそのものの初心者でもあるとして なんのために、なぜPythonを選択したのでしょうか? 0から始める人が何の理由でPythonに目をつけたというのがきになります。 #TVドラマかな?

osumofand
質問者

お礼

友達がHSPでゲームを作っていて ずっと前からプログラミングに興味がありました。 一時期、HSPを覚えたのですが難しくて途中でやめてしまいました。 ちょうど某TVドラマがやっていて もう一度、プログラミングについてやりたいなと思うようになりました。 いろいろネットで探していて Pythonが入門言語にぴったりと書いてあるサイトがあって Pythonを入門言語としてやってみようかなと思いました。

回答No.2

>リスト、クラス、スライス、タプル、辞書をどういう時に使ったらいいのか良く分かりませんでした。 ま、そうですよね(笑)。 初心者で「あれもこれもこんなにデータ型があるぞ!!!」とか言われても何が何だか分からないのが普通です(笑)。 それで、「他の言語から移ってきた人」だったら「なるほど、こんな事が出来るのか」になるんですが……。 いずれにせよ、真の意味で「初心者向けプログラミング入門」と言える本を、実は僕自身も(殆ど)見たことが無い、んです。多分「プログラミング言語C」って書籍の影響のせいもあるんでしょうが、大体のトコ展開が決まりきってる、んですね(これは、そもそもその本自体が「Fortran/Pascalから移ってきた人」の為に書かれた、と言う背景があります)。データ型の解説の後に制御構造の解説、とか。まあ、お決まりの「クソつまらない」展開ばっか、なんです(笑)。 これらは基本的に、「別の言語から移ってきた人」の為に書かれるケースが多い為、「××入門」と言うのは「入門者向けの為の本」じゃなくって「このプログラミング言語の入門(ただし、プログラミング言語を使った経験がある)」って意味なんです。そして経験者だったら「流れ」に乗ってしまえば迅速にその言語の「ツボ」が分かるようになっています。ただし、入門者はそうじゃない、と言う事ですね。従って「入門者向けの(真の)入門書」と「経験者向けの入門書」の違いを知らないといけない、んです。 で、「Pythonチュートリアル」ってのはそう言う意味では「入門者向けの入門書」を意図して編纂されたものじゃあありません。これも「他言語経験者向けに」迅速にPythonが習得出来るように意図して書かれたもの、です。 実際、Cのエキスパートなんかが「ちょっとPythonかじってみるか」と参照した場合に、「驚く程速く」Pythonが習得出来るようにはなっているようです。ただし、本当の意味での「プログラミング入門者」が読んでもチンプンカンプンでしょうね。 と言うことでそれ読んでもしっちゃかめっちゃか、でしょう。 で、もっと言うと、日本で販売されている「Python入門」系の書籍も、僕が知ってる限り、「真のプログラミング入門者」向けに書かれたものは1冊しか存在しない、んです。「Pythonは教育用言語として開発されました」と言うお題目とは違って、実際のトコロは「Perl」とか「Java」の経験者向けを意図してるんだろう、ってのが圧倒的なんです。大体、プログラミング初心者が「Perlではこれこれだが」とか「Pythonのオブジェクト指向では」とか言われたって分かるわけねーだろ、と(笑)。結構そう言うケースが多いんですね(笑)。つまり狙っている層は明らかに「Perl経験者」とか「Java経験者」なのです。 では、その「唯一のプログラミング初心者向け」のPython入門書をご紹介しましょう。それは若干古いんですが、ピアソン・エデュケーション、と言う出版社からリリースされている次の本です。 Pythonで学ぶプログラム作法: http://www.pej-hed.jp/washo/263.html これが(知ってる範囲ですけど)日本で唯一入手可能な「プログラミング初心者向けのPython入門書」です。出費せざるを得ないんですが、これを買った方が良い、でしょうね。 ちなみに、英語で構わないんだったら最新版はオンラインで読めます。次のサイト、ですね。 Learning to Program: http://www.freenetpages.co.uk/hp/alan.gauld/ と言うわけで、「Pythonチュートリアル」は取り合えず横に置いておいて、これらのどっちかを参照しながらプログラミングを学ぶ事をお薦めしておきます。

osumofand
質問者

お礼

回答ありがとうございます。 チュートリアルは初心者向けではなかったんですね。 チュートリアルを読んでも分からない原因がわかりました。 英語は得意じゃないので 『Pythonで学ぶプログラム作法』を購入するのを検討してみます。 ありがとうございました。

noname#94983
noname#94983
回答No.1

これは、多数のデータを処理するようなプログラムを書くようになったときに意味がわかってくるだろう。例えば、10人のテストの点数を合計したり平均したりするときには、リストやタプルを使うことになるだろう。また名前とメールアドレスを多数記憶し、名前からアドレスを取り出すようなときには辞書が便利だろう。 こうした、多数のデータを扱って、全部の値を計算したり、必要なものを探し出したりといったことを行うようになれば、これらの必要性はいやでもわかってくるだろう。

osumofand
質問者

お礼

回答ありがとうございます。 だんだん使っていけば分かってくるんですね。 参考になりました。ありがとうございました。

関連するQ&A

  • pythonでの配列の計算

    pythonで、配列Aの各要素(数字)に対して別途定義された関数で計算して別の配列Bに保存する、ということを考えています(あまりにも初歩)。 Pythonでこのコードを書くことができません。CやFortranでは1つ1つの配列要素をループで巡って計算して新しい配列に保存するだけなのですが、Pythonだと配列のサイズの指定はしなくていいはずですね。また配列要素1つ1つを見て回るようなこともしなくていいと思います(裏ではやっているのでしょうが)。これはどういうコードになるでしょうか。ネットなどで調べても簡単すぎるのか逆にたどり着けないみたいです。よろしくお願いします。 私が使っているPythonのテキスト(分厚い)には索引に”配列”もありません。リスト、タプルになってしまったのでしょうか。 また、このような初歩的処理はJuliaでもいけるのではと思います。Pythonの文法を手掛かりにJuliaもできそうなので。

  • python 外部ファイルのテキスト処理について

    お世話になります。 python を使用して、あるディレクトリ中にあるテキストファイル(ひな形ファイル、複数行)を読み込んで、 これに対してリストやタプル、ディクショナリなどに入った値を連続的に変化させた複数のアウトプットファイルを同一ディレクトリに生成する、という作業を考えています。 たとえばですが、外部のひな形ファイルに ${list1}番のファイル ${list2}のデータ データコード、データ名一覧 -------------+---------- ${list3} -------------+---------- などと作っておきます。{}内はプレースホルダのようなものですがこの形式でなくてもかまいません。 ここに、別途処理して${list2}、${list2}、${list3}を置き換えたファイルを、ファイル番号毎に生成する、というような作業です。 ここで、テキストの単純な置換ならば、stringモジュールのTemplateクラスなどの利用があるようですが、このような複雑な置換にはどう対応していいか分かりません。 上の例で言うと、たとえばlist3には、別の外部ファイルにあるデータ番号、データ名をタプルなどに読み込んで、それを1行ずつ流し込むことをやりたいので、このモジュールの使用は難しそうです。 他に自分で考えた方法としては、ひな形ファイルをファイルオブジェクトとして読み込んで、forを使って順番に処理していく方法ですが、これだとファイルのシーク位置がおかしくなったり、何度も同じような処理が連続してしまってうまくコードに出来ませんでした。 まだプログラミング自体に慣れていませんが、コーディング自体は自分でがんばりますので、方針を教えていただけますとうれしいです。 もし分かりづらかったら補足要求お願いします。

  • 初心者がPythonを学ぶのに最適なサイト

    プログラミング言語のPythonを学びたいのですが、いくつか質問させてください。 一年くらい前にPythonのことを知り、その時は適当にネット上のサイトを読みあさっただけで、結局Pythonを本格的に学ぶことはなかったのですが…。 一年前のことなので至らない知識や記憶違いがあると思います。 1、Pythonを学ぶのに最適なサイトを教えてください。 自分はまったくの初心者で他のプログラミング言語の素養はありません。 2、Pythonの根本的な使い方について。 とりあえずPythonをインストールしたみたのですが、Pythonを使う上で、 プログラムの構築はコマンドプロンプトでPythonを呼び出して行う のと、 そうではなくPython.exeをクリックしてそのアプリケーション上で行う どっちが正しいのでしょうか? 3、2011年7月現在、バージョンはいくつがいいんでしょうか? 一昔前はバージョン2.XXから3.XXに変わるときの仕様変更が大規模だったため乗り換えを躊躇するような風潮があったような気がするんですが(間違っていたら申し訳ありません)。 ↑を抜きにしても今からPythonを始める場合は最新バージョンを使用したほうがいいですか? 以上です。 よろしくお願いします。

  • python超初心者です(3時間目)。pythonで以下のようなランダ

    python超初心者です(3時間目)。pythonで以下のようなランダム数列を生成させるにはどうしたらいいのでしょうか? 最終結果のイメージ(16進数8桁の数列x20行): 0 : c39a29eb 1 : b26cc9bb 2 : 4c494e47 ... 19: 93c85836 以下のようにコードを組んでみたのですが、 > tmp = ws.join(list) > TypeError: sequence item 0: expected string, int found のようなエラーが出てしまいます。どうやら数字を連結しようとしてるのでダメなのかな?と思っています。 ======================================== #! /usr/bin/python import random list = [] ws = "" for i in range (20): print i, ":", for j in range(8): list.append(random.randint(0,15)) tmp = ws.join(list) print tmp list = [] tmp = "" ======================================== ※ printでは必ずスペースが入ってしまうので、それを嫌う場合配列に入れて、要素を連結させなくてはならない、とwebにあったので、その方向で試してみました。 ※ また、ここではあくまでrandom を使用し、一文字(0,1,2,...E,F)づつ出力させたいと思っています。 なお、perlでは以下のように書くことができたのですが... ======================================== #! /usr/bin/perl for($i=0; $i<20; $i++){ printf ("%-02s: ", $i); for($j=0; $j<8; $j++){ printf("%x", int(rand(15)) ); } print "\n"; } ======================================== ※ んー第二言語としてpythonを学習してみていますが道のり険しそうです(やっぱrubyにしようか)... 宜しくお願い致します。

  • Pythonの辞書について

    Pythonの辞書でキーに含まれるかどうか調べたいのですがどうすればいいですか? 例:{‘abc’:2} Aを入力したら2を返す。的なことをやりたいです。

  • Pythonのリストで

    Pythonのリストで質問があります list = [] if list and list[-1]: print("OK") if文をlist[-1]だけにするとindex out of rangeになるのに (これはわかります) if list and list[-1]:にするとIndexErrorにならないのでしょうか? プログラミング初心者です よろしくお願いします

  • Pythonで構文解析する高速なライブラリを探しています

    Pythonで、数式(Pythonの式ではない。二項演算・関数呼び出し・タプルなどがある)を解析し、構文木を作ろうとしています。 いままでSimpleParse・PLYを試しましたが処理が遅く、もっと速い方法を探しています。 SimpleParse・PLY・spark以外の構文解析ライブラリをご存知のかたは教えてください。 また、SimpleParseやPLYで高速に解析する方法があれば教えてください。 なお、yaccを使ってCで実装するのは最後の手段と言うことで

  • python: 例外classの書き方

    pythonで独自の例外classの書き方をチュートリアルで見ていて気づいたことがあります 次のような記載をみつけました class wexal(Exception):  pass 質問の都合上次のように書き換えます class abcde(Exception): 質問: 1)独自の例外クラスの書き方は、(Exception)と記載すれば、abcdeのように名称はなんでも指定できると考えてよいでしょうか 2) Guido van Rossum さん著書のチュートリアル本(ISBN-13 ‏ : ‎ 978-4873119359)をみていると、class の記載の後の名称の最初の文字は大文字になっているものが多くあります  上記で abcdeの部分は、Abcdeでなくても作法上問題ないのでしょうか。つまり(Exception)を記述するときは、最初の文字を大文字にする必要は作法上はないのでしょうか 他の例外の処理については、今回は求めていません。独自例外classの書き方についてのみ質問しています。 【回答上のご注意】 回答は、解答(答え)を求めています わたしはプログラマーではないので、昭和的な「自分で考えろ」的なものは求めていません わからなければ答えない自由もあなたにはあります 不明点があれば説明いたします

  • Pythonのプログラム言語の一覧表がほしい

    これから Python を使い始める段取りです. 以下の項目(1),(2),(3),(4),(5),(6),(7),(8) について,教えて下さい. ●(1). Python のプログラム言語の一覧表の入手方法. ●(2). Python の文法:どういう言語がどういう役割を持つか,の一覧表の入手方法. ●(3). Python のプログラム記述上の基本・規則などがまとめて書いてあるものの入手方法. ●(4). Python のプログラム実行時にエラーが発生したときの対応法の一覧表の入手方法.    (TeX 使用時のエラー対応法(一覧表)のようなもの;TeX_error_message/LaTeX_error_message) ●(5).その他,Python に関して基本的な事柄など,知っておく必要がある事に関して・・・. ●(6).下記(a),(b),(c)の Python 入門書を少し読んでみたが,Python 画面での左端にある記号 >>> の説明が何処にもない.    そこで「Python は,>>> 以下の言語を読み取って処理する」と解釈しました.正しいですか? ●(7).下記(a),(b),(c)の Python 入門書を読んでいて気づきましたが,記号 #(シャープ)より右側の文章は Python は無視して読み込まない,と解釈しました.正しいですか? ●(8). Python を使用するための「画面」には,どの様なものが,何種類あるのですか? 現在,一応,Python 3.6.5 のインストールが終わり,Python を起動すると,コマンドプロンプトのような素っ気なく,味気ない真っ黒な画面が現れます. 1+2=3 は,手書き入力で,答えの 3 が出ます. また,Hello, World! も試し終わりました. なお,現在,以下の三冊の本を読んで勉強中です. ◆(a).「独学プログラマー」 ◆(b).「Python スタートブック」 ◆(c).「Python チュートリアル・第三版」 以上,よろしくお願いします.

  • Pythonのsqlについて

    Python初心者です。 データベースで添付のtest.csvを取り込んで、aap_name というテーブルを作成しました。 sql文で1990年〜1995年の数量と1kgあたりの単価を抽出して、リスト aap_listに入れる方法を教えて頂きたいです。ソースコードでよろしくお願いします。