【问题标题】:Python- Function (generator) which value is list of sequence - beginnerPython-函数(生成器),其值为序列列表 - 初学者
【发布时间】:2015-07-24 23:11:48
【问题描述】:

我必须创建一个函数(生成器)f(n),它将返回所有序列(列表),其中单词内的差异大于 1。 例如,如果我们使用:

for i in f(5):
     print(i)

输出是:

[1]
[2]
[3]
[4]
[5]
[1,3]
[2,4]
[3,5]
[1,4]
[2,5]
[1,5]
[1,3,5]

我该怎么做?

def f(n):
  for i in range(1,n+1,2):
    yield i
for i in f(5):
    print(i)

【问题讨论】:

  • 为什么你所有的代码都是italic?另外,你是指字符串还是列表?
  • “单词内的差异大于1”是什么意思?你能用不同的方式描述你的问题吗?
  • f中的5的上限是哪里来的?
  • 我的意思是序列列表,我修复了:f(5) - 应该是。你一定要看看例子,也许现在就清楚了。

标签: python string list function generator


【解决方案1】:

如果我理解正确,您可以通过递归来实现:

def f(n):
    return f_2(n, 2)
def f_2(n, index):
    if n is index:
        for i in range(1,n+1,1):
            yield [i]
        return
    for start in range(1, n-index+1):
        l=[]
        for j in range(start,n+1,index):
            l.append(j)
            if len(l) > 1:
                yield l
    for value in f_2(n, index+1):
        yield value
for i in f(5):
    print(i)

产生:

[1, 3]
[1, 3, 5]
[2, 4]
[3, 5]
[1, 4]
[2, 5]
[1, 5]
[1]
[2]
[3]
[4]
[5]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-13
    • 1970-01-01
    • 2014-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多