2

Pythonには2つのリストがあります。

a=[1,4,5]
b=[4,1,5]

私が必要とするのは、aに従ってbを注文することです。ループなしで簡単に行う方法はありますか?

4

4 に答える 4

2

これを行う最も簡単な方法は、 を使用zipして 2 つのリストの要素をtuples に結合することです。

a, b = zip(*sorted(zip(a, b)))

sortedtuples を最初の要素 ( の要素a) で最初に比較します。zip(*...)ソートされたリストを「解凍」します。

于 2013-03-28T10:39:42.583 に答える
2

または、すべてが完璧であることを確認してから、リスト a を b にコピーすることもできます

if all(x in b for x in a) and len(a)==len(b):
    b=a[:]
于 2013-03-28T10:41:25.167 に答える
0

a のアイテムのインデックスに基づいて b を並べ替え、a にないすべてのアイテムを最後に並べます。

>>> a=[1,4,5,2]
>>> b=[4,3,1,5]
>>> sorted(b, key=lambda x:a.index(x) if x in a else len(a))
[1, 4, 5, 3]
于 2016-09-23T18:29:05.023 に答える
0

list2と同一にしたい場合はlist1、順序を台無しにしたり、何かを再配置したりする必要はありません。次list2のコピーに置き換えるだけlist1です。

list2 = list(list1)

list()は任意の iterable を取り、そこから新しいリストを生成するため、これを使用して をコピーlist1し、まったく同じ 2 つのリストを作成できます。

を実行することも可能かもしれませんがlist2 = list1、これによりいずれかへの変更が他方に影響を与えることに注意してください (同じオブジェクトを指しているため)。したがって、これはおそらくあなたが望むものではありません。

list2が他の場所で参照されているため、同じオブジェクトのままにしておく必要がある場合は、 を使用してリスト内のすべての値を置き換えることができlist2[:] = list1ます。

一般に、おそらく最初のソリューションが必要です。

于 2013-03-28T11:42:16.433 に答える