我想重新排序里面的串列的值a_list。
這是我當前的片段:
a_list = [["a", "b", "c"], ["a", "b", "c"], ["a", "b", "c"]]
order = [1, 0, 2]
a_list = [a_list[i] for i in order]
print(a_list)
這是我當前的輸出:
[['a', 'b', 'c'], ['a', 'b', 'c'], ['a', 'b', 'c']]
這是我想要的輸出:
[['b', 'a', 'c'], ['b', 'a', 'c'], ['b', 'a', 'c']]
uj5u.com熱心網友回復:
您需要訪問 的每個子串列a_list,然后在該子串列中重新排序。使用串列理解,它會是這樣的:
a_list = [["a", "b", "c"], ["a", "b", "c"], ["a", "b", "c"]]
order = [1, 0, 2]
a_list = [[sublst[i] for i in order] for sublst in a_list]
print(a_list) # [['b', 'a', 'c'], ['b', 'a', 'c'], ['b', 'a', 'c']]
您當前的代碼對子串列本身重新排序;即,例如,如果你開始
a_list = [['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i']]
那么結果就是
[['d', 'e', 'f'], ['a', 'b', 'c'], ['g', 'h', 'i']]
uj5u.com熱心網友回復:
首先,您需要為a_list. 因此,您將能夠將該解決方案映射到a_list元素。
def reorder(xs, order):
# I am omitting exceptions etc.
return [xs[n] for n in order]
然后您可以安全地將此函式映射(理解)到串列串列。
[reorder(xs, order) for xs in a_list]
uj5u.com熱心網友回復:
我建議這個,
import copy
a_list = [["a", "b", "c"], ["a", "b", "c"], ["a", "b", "c"]]
order = [1, 0, 2]
lis = copy.deepcopy(a_list)
ind = 0
for i in range(len(a_list)):
ind = 0
for j in order:
lis[i][ind] = a_list[i][j]
ind = 1
a_list = lis
print(a_list)
這可能不是最合適的解決方案,
但我認為你可以這樣做。
謝謝 祝你
好運
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/328983.html
下一篇:Haskell對整數串列求和
