我有一张单子。如何创建一个函数,用另一个数字随机替换一个10的实例?你知道吗
lst = [ [10, 100, 10 ], [10, 1000, 10], [100, 100000, 100], [10, 10, 0] ]
这是我的密码。我只能设法得到一个扁平的列表而不是嵌套的列表。如何获得嵌套列表,有没有更有效的方法?你知道吗
import random
def random_replace10(num, lst): # replaces 10 with num
indexes = []
flattened = [num for row in lst for num in row]
for ind, ele in enumerate(flattened):
if ele == 10:
indexes.append(ind)
random_index = random.sample(indexes, 1)[0]
flattened[random_index] = num
return flattened #Returns a flattened list instead of a nested list.
print(random_replace10(2, lst))
>>> [ [10, 100, 2 ], [10, 1000, 10], [100, 100000, 100], [10, 10, 0] ]
print(random_replace10(91, lst))
>>> [ [10, 100, 2 ], [10, 1000, 10], [100, 100000, 100], [91, 10, 0] ]
你可以这样做
首先需要找到有多少个
10
值,然后选择用random.randrange()
选项替换哪个值。我使用itertools.count()
保持计数器运行以匹配所选实例:这将恰好用
num
替换一个10
值,不多也不少,并创建一个新的列表。旧的名单没有动。你知道吗您也可以就地进行替换,但在这种情况下,我将返回
None
(就像list
上的其他变异方法一样,例如list.append()
,等等)。在这种情况下,首先记录10
值的位置,使用random.choice()
从这些位置中选择一个:第一版演示:
以及就地版本:
相关问题 更多 >
编程相关推荐