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

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

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

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

Q&A

解決済

1回答

1233閲覧

複数のリストが入っているリストを分けたい

ktg_st

総合スコア33

Python

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

0グッド

1クリップ

投稿2020/08/04 07:57

編集2020/08/04 09:32
i=[[1,2,3,4],[5,6,7,8],[6,5,4,2,]

上記のようなリストを分けたい

i1=[1,2,3,4] i2=[5,6,7,8] i3=[6,5,4,2]

上記のような形にしたいのですが方法が分かりません。

やりたいこと
各リストの1番目の和、2番目の和という形で求めるためにリスト分けを行おうとしています。
もっとシンプルな方法がありましたら教えて頂けると助かります。

よろしくお願いします。

追記

def get_week_schedules(self, start, end, days): shops= Shops.objects.all() b =[] for a in shops: if a.shop in b: pass else: shop=a.shop b.append(shop) days = {day: [] for day in days} df = pd.DataFrame(days) df.fillna(" ", inplace=True) lookup = { '{}__range'.format(self.date_field): (start, end), } c=[] for shop in b: configs = Shop_config_day.objects.filter(**lookup,shops__shop=shop) pp=1 for config in configs: if pp==1: shop=config.shops.get_shop_display() date= config.date pa = config.day_need fff =pd.DataFrame({date:int(pa)},index =[shop]) df = pd.concat([df,fff],axis=0) df.fillna(" ", inplace=True) pp=2 if shop != config.shops.get_shop_display(): shop=config.shops.get_shop_display() date= config.date pa = config.day_need fff =pd.DataFrame({date:int(pa)},index =[shop]) df = pd.concat([df,fff],axis=0) df.fillna(" ", inplace=True) c.append(config.day_need) else: shop=config.shops.get_shop_display() date= config.date pa = config.day_need df[date]= df[date].astype(str) df.at[shop,date] =int(pa) df.fillna(" ", inplace=True) i=df.values ret = [sum(v) for v in zip(*i)] print(ret)

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

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

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

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

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

guest

回答1

0

ベストアンサー

各リストの1番目の和、2番目の和という形で求める

zipで各要素毎に列挙してsumすればよいです。

Python

1i=[[1,2,3,4],[5,6,7,8],[6,5,4,2]] 2ret = [sum(v) for v in zip(*i)] 3print(ret) # [12, 13, 14, 14]

投稿2020/08/04 08:06

can110

総合スコア38341

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

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

ktg_st

2020/08/04 09:19

ありがとうございます。 floatとintが混ざっておりエラーになってしまいます。 django上で使っているのですが、リストに保存する前にint()としているのですが上手く機能しません。
can110

2020/08/04 09:29 編集

実際に動作するコードとエラー全文を質問本文に記載ください。
ktg_st

2020/08/04 09:35

code記載しました。 strとintでした。 dbから引っ張って来たものをdfにしてそこからリスト作成しています。 各列の合計を出したい思っているのですが、そこが上手くいきませんでした。 df.sum()も試したのですが上手くいきませんでした。もしかしたらdf.sumが上手くいかなかったのもstrが混じっていたからかもしれないです。
ktg_st

2020/08/04 10:13

ちなみにリストの中身が[[2.0 2.0 2.0 2.0 2.0 2.0 23.0 2.0 2.0 2.0 2.0 2.0 2.0 5.0 2.0 5.0] [-1.0 -1.0 -1.0 81.0 -1.0 8.0 4.0 ' ' 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -1.0]]です。
can110

2020/08/04 10:20

「' '」がstrでしょうか? strを数値に変換してDataFrameでsumしたほうが手っ取り早いと思います
ktg_st

2020/08/04 10:59

できました! sumの使い方も勉強になりました、ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問