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

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

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

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

解決済

Python3のlist内の日本語の扱い

kinesin_lks
kinesin_lks

総合スコア8

Python 3.x

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

2回答

0評価

1クリップ

226閲覧

投稿2017/11/26 10:28

編集2017/11/26 13:08

Python3で日本語のlistを扱う時の質問です。

list = ['スシ食べたい']
の'ス'を取得しようとすると、
list[0]で取得できる時もあれば、list[:3]で取得できる時もあります。
この違いがよくわかりません。
どなたかわかる方いますか?

開発環境は、
Mac/Terminalでemacs使ってます。

Python

list = ['スシ', 'ビーフシチュー', 'ラーメン'] # 'スシ'の'ス'を出力したい #これで出力できる時もあれば print(list[0][0]) #これで出力できる時もある print(list[0][:3])

/-------------------追記----------------------/
実際のコードは競プロのものなので、似たものを追加いたします。
コードの目的はリストのなかでしりとりをさせるものです。

Python

import copy list = ["スライド", "ドングリ", "ドミノ", "ドンブリ", "ヌードル"] def search(data, i, order): data[i][3] = 1 for j in range(len(data)): if j == len(data) - 1: print('fin') elif data[i][2] == data[j][1]: # search # もし最後の文字と最初の文字が同じものがあれば再帰させる order.append(len(order)) search(data, j, order) return order def main(): # 最初の一文字を格納するためのリスト s_list = [] # 最後の一文字を格納するためのリスト e_list = [] # しりとりの順番を格納するためのリスト order = [] # 単語、一文字目、最後の文字をまとめて格納するためのリスト m_list = [] # m_listを全単語分まとめて格納するためのリスト data = [] for i in list: s_list.append(i[0:3]) e_list.append(i[len(i) - 3:]) for i in range(len(list)): m_list.append(list[i]) m_list.append(s_list[i]) m_list.append(e_list[i]) m_list.append(0) data.append(copy.deepcopy(m_list)) del m_list[:] for i in range(len(data)): m_data = search(copy.deepcopy(data), copy.deepcopy(i), copy.deepcopy(order)) # search関数より得られた順番を出力 print(str(m_data).decode('string-escape') if __name__ == '__main__': main()

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

miyahan

2017/11/26 10:59

サンプルコードにおいて print(list[0][:3]) は「スシ」となるはずですが、「ス」と出るということですか?
kinesin_lks

2017/11/26 12:10

はい。「ス」と表示される時もあれば、「スシ」と表示される時もあります。最初はprint(list[0][0])で「ス」が表示できていたのですが、途中からエラーが出るようになってしまいました。いろいろ試したところ、print(list[0][:3])で「ス」と表示されてしまうのでおかしいと思い、質問いたしました。
miyahan

2017/11/26 12:31

「途中からエラーが出る」というのは具体的にどういったエラーメッセージですか?
kinesin_lks

2017/11/26 12:37

論理エラーの類かと思います。元々は正常に「ス」と表示されていたのですが、途中から「?」と表示されるようになってしまいました。「?」が半角だったので、もしかしたら半角で認識されているのでは?と考えました。いろいろと弄った結果、print(list[0][:3])でうまくいきました。
miyahan

2017/11/26 12:41

実際に問題を再現出来るコードと、実際に出力されたエラーメッセージを可能な範囲で質問本文に追記いただけますか。
kinesin_lks

2017/11/26 13:11

ご指摘ありがとうございます。追記いたしました。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Python 3.x

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