作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我很难解决以下问题:我必须合并 N 个列表。每个列表都包含一些字符串对象。对于每个列表,虽然我不知道哪个是排序函数,但我知道它是有序的。此外,最终列表应尊重生成它的子项的所有顺序。例如:
l1 = ['This','world']
l2 = ['This','is','a','world','!']
l3 = ['a','hello','world']
merged_list = merge_function(l1,l2,l3)
我想要达到的结果是收到一个包含
merged_list # ['This','is','a','hello','world','!']
但我无法弄清楚如何做到这一点,因为除了提供元素的顺序之外,列表不遵循任何规则。任何帮助,将不胜感激。
l1 = ['This','world']
l2 = ['This','is','a','world','!']
merged_list = l1
如果我然后简单地将缺少的元素附加到 merge_list 我将获得:
merged_list # ['This','world','is','a','!']
这个列表打破了 l2 的顺序。我希望现在我能更好地解释这个问题。
最佳答案
您的问题的主要困难在于我们是否有这样的案例:
l1 = ['a', 'world']
l2 = ['This', 'is']
l3 = ['is', 'a']
在这种情况下,预期结果将是
['This', 'is', 'a', 'world']
.虽然,关系
'This' < 'world'
必须通过传递性获得。
def merge_function(*lists):
predecessors = {w: set() for w in set(w for lst in lists for w in lst)}
# Add trivial predecessors from the lists
# For example in ['foo', 'bar', 'baz']:
# we know 'foo' is a predecessor of 'baz'
for l in lists:
tail = l[::-1]
for word in l:
tail.pop()
for successor in tail:
predecessors[successor].add(word)
# Use transitive property to update predecessor
# This is the fixed point part of the algorithm
change_occured = True
while change_occured:
change_occured = False
for word, word_predecessors in predecessors.items():
for predecessors_set in predecessors.values():
if word in predecessors_set and any(w not in predecessors_set for w in word_predecessors):
change_occured = True
predecessors_set.update(word_predecessors)
return sorted(predecessors, key=lambda w: predecessors[w])
l1 = ['a', 'world']
l2 = ['This', 'is']
l3 = ['is', 'a']
merged_list = merge_function(l1,l2,l3)
print(merged_list) # ['This', 'is', 'a', 'world']
关于python - 在没有关于排序函数的先验知识的情况下合并 Python 中的有序列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67972701/
我想创建一组参数用于 R 中的 brms 模型: library(brms) tmp <- prior(normal(10,2), nlpar = "x") 理想情况下,我想从导入的矩阵中提取每个先验
我想在 PyMC3 中指定大型多元正态分布作为先验。该分布的精度矩阵的行列式在数值上等于零。看来这是 PyMC3 的问题。有什么建议么?我只需要最大化后验,无论行列式的值如何,都可以这样做。 最佳答案
(未在 Activator 文档中找到) 通过在文件 build.sbt 中添加以下条目(粗体),似乎可以让 Activator 也使用现有的本地 Maven 存储库: 解析器 += Seq( 位于“
我之前实现了原始的 Bayesian Probabilistic Matrix Factorization (BPMF) pymc3 中的模型。 See my previous question供引用
我是一名优秀的程序员,十分优秀!