簡體   English   中英

Pythonic方法生成可能的數組列表

[英]Pythonic way to generate a list of possible arrays

給定一個數組(例如[3,5,2]),我試圖生成一個可能的數組列表,這些數組是在數組中添加1到1個條目得到的:[[4,5,2],[3 ,6,2],[3,5,3]]。

我可以通過以下方式完成它,但想知道是否有更多的pythonic方式來獲得結果?

test = [3, 5, 2]
result = [t.copy() for _ in range(len(test))]
for index, _ in enumerate(result):
    result[index][index] += 1

以下是如何使用列表理解來完成它:

test = [3, 5, 2]   
print [test[:i] + [v + 1] + test[i+1:] for i,v in enumerate(test)]

產量

[[4, 5, 2], [3, 6, 2], [3, 5, 3]]

這是列表理解的另一個內聯解決方案:

test = [3, 5, 2]
result = [[v+1 if i==j else v for j, v in enumerate(test)] for i in range(len(test))]

或者,正如PM 2Ring所注意到的,你可以利用True == 1False == 0的事實:

result = [[v + (i==j) for j, v in enumerate(test)] for i in range(len(test))]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM