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

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

新規登録して質問してみよう
ただいま回答率
85.50%
リストボックス

ユーザーがリストから1つ以上のアイテムを選択できるようにするGUI要素です。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

連結リスト

連結リストとは、データ構造のひとつであるリストの中で、要素が前後の要素の情報を持つことで、要素が連結(リンク)しているリストの事を呼びます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

2回答

1722閲覧

python 型、リスト、for文、クラス

NatsukiKataoka

総合スコア7

リストボックス

ユーザーがリストから1つ以上のアイテムを選択できるようにするGUI要素です。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

連結リスト

連結リストとは、データ構造のひとつであるリストの中で、要素が前後の要素の情報を持つことで、要素が連結(リンク)しているリストの事を呼びます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/08/22 16:15

前提・実現したいこと

作ろうとしているもの: lsというリストの中に名前だけを入れたリストを入れたい。
今の状態だとクラスを使うためのインスタンスがリストpeopleに入っていてそのpeopleを使って一つのリストにする関数がクラスの中にある。そうするとどうやってdef matomeを呼び出せばよいかわからなくてとても困っています。
もしわかる方がいたら教えてください。
###出力結果

なし

該当のソースコード

class Roster: def __init__(self, name, age): self.name = name self.age = age def add(self): ls = [] ls.append(self.age) ls.append(self.name) def matome(self): for d in people: add() print(ls) person1 = Roster('max', 18) person2 = Roster('john', 13) person3 = Roster('max', 12) person4 = Roster('mark', 28) person5 = Roster('dog', 10) people = [person1,person2,person3,person4,person5]

試したこと

また上のソースコードではなく、自分は

def list(): ls = [] for i in data: ls.append(i.name) print(ls)

という関数を使おうとしたのですが、出力結果が

['max'] ['max', 'john'] ['max', 'john', 'mark'] ['max', 'john', 'mark', 'dog']

になってしまいます。どうしたらよろしいのでしょうか?

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

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

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

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

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

meg_

2019/08/22 22:54

出力結果の元のコードを掲載してください。
shunx2_1003

2019/08/22 23:36

Peopleを使ったひとつのリストは、どのように出力されるようにしたいのですか?
guest

回答2

0

Roster クラスのインスタンスのリストから、
名前の文字列のリストを作りたい関数を作るなら
staticmethod を使えばよいような気がします。

python

1class Roster: 2 def __init__(self, name, age): 3 self.name = name 4 self.age = age 5 6 @staticmethod 7 def matome(people): 8 return [p.name for p in people] 9 10person1 = Roster('max', 18) 11person2 = Roster('john', 13) 12person3 = Roster('max', 12) 13person4 = Roster('mark', 28) 14person5 = Roster('dog', 10) 15people = [person1,person2,person3,person4,person5] 16 17ls=Roster.matome(people) 18 19print(ls) 20# ['max', 'john', 'max', 'mark', 'dog']

ただ、Roster クラスの属性をみると、クラスが個人を指しているので、
私も Person クラスという名前の方が適切な気がします。

投稿2019/08/27 18:11

DanDan244

総合スコア57

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

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

0

問題はRosterが複数人を載せた名簿なのか、名簿に載っている個人を表したいのかが混乱していることです。
前者であれば、以下のように2つのクラスに分離するのが自然です。

Python

1class Person: 2 def __init__(self, name, age): 3 self.name = name 4 self.age = age 5 6class Roster: 7 def __init__(self, name): 8 self.name = name # 名簿の名前(タイトル) 9 self.ls = [] 10 11 def add(self, person): 12 self.ls.append(person) 13 14 def sort_by_name(self): 15 self.ls.sort(key=lambda v:v.name) 16 17 def sort_by_age(self): 18 self.ls.sort(key=lambda v:v.age) 19 20 def get_name_list(self): 21 return [p.name for p in self.ls] 22 23 24r = Roster('cryptographer') 25r.add(Person('Bob',10)) 26r.add(Person('Alice',11)) 27 28r.sort_by_name() 29print(r.get_name_list()) 30 31r.sort_by_age() 32print(r.get_name_list())

投稿2019/08/23 00:16

can110

総合スコア38233

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問