我有清单和清单:
cliques = [ [1,9,5], [3,5,4], [10,7,0], [2,7,5], [6,11], [6,5,4], [3,1], [11, 0]]我从列表中随机选择一项:
rand_clique = numpy.random.choice(cliques)例如,cliques[2] = [10,7,0]和我希望在Cliques元素中创建一个具有唯一值的新列表。因此,我得到了一份清单:
unique_cliques = [[10,7,0], [1,9,5], [6,11]]我写的代码,但我认为它可以优化更好,我如何做到这一点?
import numpy as np
unique_cliques = []
not_unique_cliques = []
cliques = [[1, 9, 5], [3, 5, 4], [10, 7, 0], [2, 7, 5], [6, 11], [6, 5, 4], [3, 1], [11, 0]]
rand_clique = np.random.choice(cliques)
unique_cliques.append(rand_clique)
for elem in rand_clique:
not_unique_cliques.append(elem)
for clique in cliques:
temp = []
count = 0
for elem in clique:
if elem not in not_unique_cliques:
count += 1
temp.append(elem)
if count == len(clique):
unique_cliques.append(clique)
not_unique_cliques = not_unique_cliques + temp
print(rand_clique)
print(unique_cliques)如果程序能把元素不按顺序排列,但每次都有一个满足上述条件的随机元素,那就太好了。
发布于 2020-04-15 22:05:44
您可以通过过滤所看到的值,从集群列表的洗牌版本中构建列表:
import random
cliques = [[1, 9, 5], [3, 5, 4], [10, 7, 0], [2, 7, 5], [6, 11], [6, 5, 4], [3, 1], [11, 0]]
unique_cliques = []
seen = set()
for clique in random.sample(cliques,len(cliques)):
if seen.intersection(clique): continue
seen.update(clique)
unique_cliques.append(clique)
print(unique_cliques) # your results will vary
# [[6, 11], [3, 5, 4], [10, 7, 0]]这不仅会将第一个子列表随机化,还会将随后的子列表随机化。
发布于 2020-04-15 20:42:00
我尽了最大努力:
import numpy as np
unique_cliques = []
not_unique_cliques = []
cliques = [[1, 9, 5], [3, 5, 4], [10, 7, 0], [2, 7, 5], [6, 11], [6, 5, 4], [3, 1], [11, 0]]
rand_clique = np.random.choice(cliques)
unique_cliques.append(rand_clique)
not_unique_cliques.extend(rand_clique)
for clique in cliques:
if len(set(clique)&set(not_unique_cliques))==0:
unique_cliques.append(clique)
not_unique_cliques.extend(clique)
print(rand_clique)
print(unique_cliques)发布于 2020-04-15 20:51:20
使用成套设备应提高效率:
import random
cliques = [[1, 9, 5], [3, 5, 4], [10, 7, 0], [2, 7, 5], [6, 11], [6, 5, 4], [3, 1], [11, 0]]
rand_clique = random.choice(cliques)
unique_cliques = [rand_clique]
nonunique_elements = set(rand_clique)
for clique in cliques:
if not set(clique).intersection(nonunique_elements):
unique_cliques.append(clique)
nonunique_elements.update(clique)
print(unique_cliques)顺便说一句,根据random.choice选择了哪个集团,结果是不同的!
https://stackoverflow.com/questions/61238030
复制相似问题