🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python

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

Q&A

解決済

2回答

1899閲覧

【python】二重タプルへの追加方法

退会済みユーザー

退会済みユーザー

総合スコア0

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python

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

0グッド

0クリップ

投稿2019/10/21 16:40

前提・実現したいこと

((1, 1), (2, 2), (3, 3))というようなノリの単純な二重タプルの作成を...(100, 100))まで行いたいです。
手打ちでやるのは流石に面倒なので、内包表記や関数を利用して作成したいと思っています。
簡単にできるだろと思ってやってみてるのですが、案外できず手が止まってしまいました。

試した方法

とりあえず二重リストと同じ流れで書いてみました。
しかし、二重リストのようにはならず、全てのタプルが繋がり一重のタプルになってしまいました。

x = () for i range(1, 101): x += (i, i) x # -> (1, 1, 2, 2, 3, 3, ... , 100, 100)

タプルの形を保ったまま他のタプルの中に追加していく方法はないのでしょうか?
初歩的な質問で恐縮ですが、教えていただければ幸いです。

補足情報(FW/ツールのバージョンなど)

python 3.6

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

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

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

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

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

guest

回答2

0

ベストアンサー

ジェネレータ式を使います。

python

1# Step 1. 2ジェネレータ = ((i, i) for i in range(100)) 3tuple(ジェネレータ)

python

1# Step 2. 2tuple(((i, i) for i in range(100)))

python

1# Step 3. 引数が1つの関数に対しては、ジェネレータ式の括弧は省略できます。 2tuple((i, i) for i in range(100))

投稿2019/10/21 16:48

編集2019/10/21 16:51
nico25

総合スコア830

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

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

退会済みユーザー

退会済みユーザー

2019/10/21 17:21

参考リンクありがとうございます! 内包表記的なこういうやり方があるんですね。ありがとうございます!
nico25

2019/10/21 17:26

恐れいります :)
guest

0

次のコードを研究してみてください。

x.py

python3

1x = ((1, 1), (2,2)) 2print(x) 3print(x[1]) 4print(x[1][1]) 5print() 6 7x = tuple(map(lambda i: (i, i), range(1, 5))) 8print(x) 9print(x[1]) 10print(x[1][1]) 11print() 12 13x = tuple(((i, i) for i in range(1, 5))) 14print(x) 15print(x[1]) 16print(x[1][1]) 17print()

実行例
イメージ説明

投稿2019/10/21 22:10

katoy

総合スコア22324

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問