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

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

新規登録して質問してみよう
ただいま回答率
85.48%
多次元配列

1次元配列内にさらに配列を格納している配列を、多次元配列と呼びます。

Python 3.x

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

Python

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

3回答

314閲覧

対応関係を維持したまま順番を変えた配列の要素を取り出したい

tbc

総合スコア11

多次元配列

1次元配列内にさらに配列を格納している配列を、多次元配列と呼びます。

Python 3.x

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

Python

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2020/06/21 05:39

編集2020/06/21 07:07

a=[[1,2],[3,4],[5,6]]という配列を、中の配列の順番はバラバラで、しかしxとyは対応する形で(例えばx=[5,1,3] y=[6,2,4])というようにxとyをそれぞれ取り出したいです。

初歩的な質問で申し訳ありません。言語はpythonです。

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

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

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

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

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

kei344

2020/06/21 07:00

(質問文は編集できます)言語を質問タグで指定してください。
tbc

2020/06/21 07:08

不慣れなものでご指摘大変助かります。 編集致しました。
guest

回答3

0

こんにちは

random.sample と、zip を使うと、以下のように一行で書けます。

python3

1x, y = zip(*sample(a, len(a)))

ただし、上記で得られる x, y ともにタプルなので、リストが欲しいのであればこの後、

python3

1x, y = list(x), list(y)

とするなりして、リストに変換します。

-** 動作確認用Repl.it:** https://repl.it/@jun68ykt/Q271703

投稿2020/06/21 12:50

jun68ykt

総合スコア9058

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

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

0

ベストアンサー

Python

1import random 2 3a=[[1,2],[3,4],[5,6]] 4random.shuffle(a) 5 6x = [a[i][0] for i in range(len(a))] 7y = [a[i][1] for i in range(len(a))] 8 9print(x) 10print(y)

投稿2020/06/21 07:17

can110

総合スコア38262

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

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

0

Python3での回答を希望されているようでしたのでPythonで書き直しました。慣れていない言語のため書き方が不自然な部分もあるかと思いますがご容赦くださいませ。

import random a = [[1, 2], [3, 4], [5, 6]] x = [] y = [] isUsed = [] for i in range(len(a)): isUsed.append(False) print(isUsed) while True: if (len(x) == len(a)): break index = random.randrange(len(a)) while isUsed[index]: # print(index) # print(isUsed[index]) index = random.randrange(len(a)) isUsed[index] = True x.append(a[index][0]) y.append(a[index][1]) print(x) print(y)

どの言語で回答すれば良いかわからなかったのでJavaで書いてみました。

こういうことでしょうか?

Main.java

1public static void main(String[] args) { 2 int[][] a = { { 1, 2 }, { 3, 4 }, { 5, 6 } }; 3 Random rand = new Random(); 4 List<Integer> x = new ArrayList<>(); 5 List<Integer> y = new ArrayList<>(); 6 boolean[] isUsed = new boolean[a.length]; 7 8 while (true) { 9 // 終了条件 10 if (x.size() == a.length) 11 break; 12 13 // 既に出たindexは使わないので新しいものが出るまでrandomにindexを選ぶ 14 int index = rand.nextInt(a.length); 15 while (isUsed[index]) { 16 index = rand.nextInt(a.length); 17 } 18 isUsed[index] = true; 19 x.add(a[index][0]); 20 y.add(a[index][1]); 21 } 22 23 // 結果の出力 24 System.out.print("x:"); 25 for (int v : x) { 26 System.out.print(v + " "); 27 } 28 System.out.println(); 29 System.out.print("y:"); 30 for (int v : y) { 31 System.out.print(v + " "); 32 } 33 }

投稿2020/06/21 05:59

編集2020/06/21 06:57
masibw

総合スコア38

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

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

tbc

2020/06/21 06:40

回答誠にありがとうございます。 すみません勝手に書いた気になっていたのですがpython3でやっております。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問