如何将字符串元组的元组转换为单词?

时间:2019-05-18 02:54:59

标签: python

python中的

''。join函数在一个元组中使用字符串。假设我们有“嵌套”字符串元组,如txt输入所示

这里有一些树状结构。有字根。例如,接缝以“ se”为根。他们还将“ se”与“性”和“七”作为根,但“ s”仅是其他词“汤”的根。 ram没有任何共享根。

   _ _ _ r _ _ _ a _ _ _ m%
  /
 /          _ _ _ o _ _ _ u _ _ _ p
-          /
 \        /          _ _ _a% _ _ _ m%
  \_ _ _ s          /
          \        /
           \_ _ _ e _ _ _ x%
                   \
                    \_ _ _ v _ _ _ e _ _ _ n%


#input
txt = "(ram%+s(e(a%m%+x%+ven%)+o%up%))"

#output
[ram, sea, seam, sex, seven, soup]

输出应为单词列表,单词的词根以'+'分隔。请牢记并根据以下两个条件进行排序

+ refers to start new word

% refers to the end of the word

希望您能回答我的意思,希望您能提供帮助。

1 个答案:

答案 0 :(得分:0)

  

您对问题的解释方式(至少对我而言)没有任何意义,但这是我回答这个问题的机会:

您提供的输入格式虽然不错,但不能直接在python代码中使用。这是一种有效的方式,您可以表示在python输入中使用的表示法:

is_prime <- function(num) {
  for (n in seq(2, num)) {
    if (num %% n != 0) {
      n <- n + 1
    } else {
      return(FALSE)
    }
    return(TRUE)
  }
}

lcm <- function(num) {
  exp <- 1
  result <- 1
  for (i in seq(2, num)) {
    if (is_prime(i)) {
      while (TRUE) {
        if (i ^ exp > num) {
          result <- result * i ^ (exp - 1)
          break
        }
        exp <- exp + 1
      }
      exp <- 1
    }
  }
  return(result)
}
lcm(20)

每个元组的形式如下:

# empty root node, use empty string
txt = ("", "ram", ("s", "oup", ("e", "am", "x", "ven")))

其中(root, additions) 是字符串,而root是元组或字符串。 要将additions解析为有效列表,您可以编写一个递归函数,如下所示:

txt

要使用def parse(x): # return [x] if x is just a string. if isinstance(x, str): return [x] root, additions = x[0], x[1:] words = [] for addition in additions: # recursively 'flatten' all additions in current node sub_additions = parse(addition) # add the root word to each sub_addition sub_additions = [root + addition for addition in sub_additions] # add the new sub additions to the list words = words + sub_additions return words ,只需将其命名为:例如parse

注意事项:

  • 不确定这是最简单还是最pythonic的方式。
  • 将仅使用嵌套的元组和字符串集,将不接受其他类型。
  • 不使用您在答案中使用的确切输入格式。 (因为它不是有效的python吗?)