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

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

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

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

Q&A

2回答

206閲覧

リストから取り出した要素を並べたリストに、対応させた要素を並べたリストを同じ親リストから作成する方法

kyonmn

総合スコア15

Python

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

0グッド

0クリップ

投稿2019/02/15 12:28

編集2019/02/15 15:17

複数のリストを統合してCSVへ格納する際に、行列を同じ大きさへ統合したいのですが、やり方がわかりません。
for文で子リストへ親リストのある要素を入れ込み、それに合わせて別の子リストへ親リストの要素を入れたいと考えています。
具体的には、親リスト「Airplane」にある「<simulatesource.hanedaapproach object at 0x105156cc0>」という要素がリスト「Airplane1」に格納された際、それに対応する要素を「Airplane2」へ入れ込みたいのです。どのようにすれば良いのかアドバイスを願います。

以下コードです:

Python

1csvfile = open('testdata.csv') 2for row in csv.reader(csvfile): 3 print(row) # 一行づつプリントしていきます 4 5 with open('testdata.csv') as fp: 6 lst = list(csv.reader(fp)) 7 print(lst) 8 i = 1 # カウンタを置いておきます 9 Airplane = {} # 空の辞書追加 10 11 for l in lst: 12 print (l) 13 print(type(l)) 14 for n in l: 15 time = l[0] 16 flightnumber = l[1] 17 position1 = l[2] 18 position2 = l[3] 19 altitude = l[4] 20 shipname = l[5] 21 22 Airplane[i] = hanedaapproach( 23 time, flightnumber, position1, position2, altitude, shipname 24 ) 25 # それぞれの値を指定して、空の辞書へ打ち込んでいきます 26 27 28 i = i + 1 29 30 31Airplane1 = [] 32Airplane2 = [] # 空のリストを作っていきます 33 34Airplane[i] = hanedaapproach( 35 time, flightnumber, position1, position2, altitude, shipname 36 ) 37 38for i in Airplane: 39 if float(Airplane[i].position1)>=30.4436125: 40 Airplane1.append(Airplane[i]) 41 42 for j in Airplane: 43 if Airplane[i].time == Airplane[j].time and \ 44 (Airplane[i].position1 != Airplane[j].position1 or 45 Airplane[i].position2 != Airplane[j].position2): 46 Airplane2.append(Airplane[j]) 47 break 48 else: 49 Airplane2.append('') 50 51print(Airplane1) 52print (Airplane2)

現在の出力

[<simulatesource.hanedaapproach object at 0x105156cc0>, <simulatesource.hanedaapproach object at 0x105156f28>, <simulatesource.hanedaapproach object at 0x105156cf8>, <simulatesource.hanedaapproach object at 0x105156da0>] ['', <simulatesource.hanedaapproach object at 0x105156f28>, <simulatesource.hanedaapproach object at 0x105156cc0>, '', '', '', '', '', '', '', '']

期待される出力

[<simulatesource.hanedaapproach object at 0x105156cc0>, <simulatesource.hanedaapproach object at 0x105156f28>, <simulatesource.hanedaapproach object at 0x105156cf8>, <simulatesource.hanedaapproach object at 0x105156da0>] [<simulatesource.hanedaapproach object at 0x105156f28>, <simulatesource.hanedaapproach object at 0x105156cc0>,'', '']

または

[<simulatesource.hanedaapproach object at 0x105156cc0>, <simulatesource.hanedaapproach object at 0x105156f28>] [<simulatesource.hanedaapproach object at 0x105156f28>, <simulatesource.hanedaapproach object at 0x105156cc0>] #削除したデータ [<simulatesource.hanedaapproach object at 0x105156cf8>, <simulatesource.hanedaapproach object at 0x105156da0>]

補足

hanedaapproachのコードは以下の通りです。

python

1 2heavylist = ['B77W','B747'] 3mediumlist = ['B763','A333','A332','B789','B788','B78W','A358'] 4lightlist = ['B738','B737','B735','B734','A321','A320','A319'] 5class hanedaapproach: 6 def __init__(self, time, flightnumber, position1, position2,altitude, shipname): 7 self.time = time 8 self.flightnumber = flightnumber 9 self.altitude = altitude 10 self.position1 = position1 11 self.position2 = position2 12 self.shipname = shipname 13 14 def info(self): 15 for i in heavylist: 16 if self.shipname == i: 17 return 'H' 18 for j in mediumlist: 19 if self.shipname == j: 20 return 'M' 21 for k in lightlist: 22 if self.shipname == k: 23 return 'L' 24

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

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

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

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

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

Lhankor_Mhy

2019/02/15 12:39

i が未定義のようですが、何が入っているのですか?
kyonmn

2019/02/15 14:05 編集

修正いたしました。ご確認ください。前半の i にはカウンター、後半の i には辞書の中へ入っているリスト形式のデータが格納されています
guest

回答2

0

内容については何をしてるのかちょっとわかりませんが、インデント間違ってないですか?

python

1 for j in Airplane: 2 if Airplane[i].time == Airplane[j].time and \ 3 (Airplane[i].position1 != Airplane[j].position1 or 4 Airplane[i].position2 != Airplane[j].position2): 5 Airplane2.append(Airplane[j]) 6 break 7 else: 8 Airplane2.append('')

投稿2019/02/16 00:33

Lhankor_Mhy

総合スコア36134

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

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

0

hanedaapproachは、どのような関数でしょうか?
classなどで定義している際は、そのコードも付属してもらえると助かります

投稿2019/02/15 15:12

TsuhaYuya

総合スコア14

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

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

kyonmn

2019/02/15 16:12

追加いたしました、よろしくお願いいたします
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問