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

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

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

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

Q&A

解決済

3回答

2035閲覧

itertoolsからintで要素をもらう方法

yukiko

総合スコア41

Python 3.x

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

0グッド

0クリップ

投稿2017/11/17 02:53

itertoolsのデカルト積(?…という名前も初めて知りました;;)で配列にもらったものを合計したいのですが、配列内にstrで入ってくるため、エラーとなってしまいます。

python

1for element in itertools.product('972', repeat=N): 2 print (sum(int(element)))

何か小細工を弄すればできるんじゃないかと、上記のように書いてみましたが、やはりダメでした。
配列をループで回して、int変換して合計すればできると思うのですが、itertoolsがそもそもintで配列を作ってくれればsumでできると思うので調べているのですが、現時点で解決できていません。
がんばってループで回す方法しかないものでしょうか?

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

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

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

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

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

guest

回答3

0

質問に書いてあるとおり、毎ループでintすることが無駄なので最初に変換するべきで、

python

1for element in itertools.product(map(int, '972'), repeat=N): 2 print(sum(element))

がいいでしょうね。

投稿2017/11/17 03:00

quickquip

総合スコア11038

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

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

yukiko

2017/11/17 03:15

うわー、すみません。最初の回答の方にお返事しているまに、回答頂いていたんですね。 magichanさんと同じ回答なので、きっとポピュラーな書き方なんですね。 python使いの方には常識…なのかもですね。スミマセン。 ありがとうございます。
quickquip

2017/11/17 04:05

なにも問題はありませんよ。 素直な問題なので答えが同じになってもおかしくないでしょうね。
guest

0

こういうこと?

Python

1for element in itertools.product(map(int, '972'), repeat=N): 2 print(sum(element))

投稿2017/11/17 03:07

magichan

総合スコア15898

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

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

magichan

2017/11/17 03:10

おっ! 完全に quiquiさんとかぶってしまいました 申し訳ありません。
yukiko

2017/11/17 03:13

はい、そういうことでした^^ うわー、すみません。最初の回答の方にお返事しているまに、回答頂いていたんですね。 こちらも今実行してみました。シンプルに書けますね。 ありがとうございます。
guest

0

ベストアンサー

elementをリスト内包表記でintリストに変換してみました。

Python

1import itertools 2N = 3 3for element in itertools.product('972', repeat=N): 4 #l = [int(i) for i in element] 5 #s = sum(l) 6 #print(l) 7 #print(s) 8 print( sum([int(i) for i in element]))

投稿2017/11/17 03:00

can110

総合スコア38258

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

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

yukiko

2017/11/17 03:06

うわ…!!!すごいです。あっというまに回答が…。 今、実行してみたら、ちゃんと動きました。 リスト内包表記というんですね。 itertoolsに何かのパラメータを与えてintにする方法があるのかなあと思っていました。 助かります。勉強します。ありがとうございます。
can110

2017/11/17 04:13

リスト内包表記は分かりやすく便利なのですが今回のケースでは無駄があるので quiquiさん、magichanさんの回答の方が適切かなあと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問