繁体   English   中英

我可以使用返回值作为参数多次运行相同的 function 吗?

[英]Can I run the same function multiple times with the return value as the argument?

如果你给它一串颜色,代码应该返回一个最终的颜色值,比如

此处颜色:GG、BG、RG、BR
变色:G、R、B、G

例如:'RGBG' 将返回 'B' 在这里,我写了一个 function 来分配颜色标签(分配)和另一个将提供分解的主字符串的函数。 当我根据主字符串的大小手动键入new_value = assign(main(again))时一切正常(RGBG -> BRR -> GR ->B; 4 次,但我在advance 因为 again 参数将有一个值开头),但是当我再次使用 = assign(main(again))时返回一个空值,即使我在前面的行中给了参数一个值所以它不是“未定义的”参数”错误..我想。

我对此很陌生,如果您能以正确的方式指出我,我将不胜感激。 希望这条消息能让你平安无事:)

def assign(xlist):
    for x in range(len(xlist)):
        if xlist[x] in ('BG', 'GB', 'RR'): xlist[x] = 'R'
        elif xlist[x] in ('RG', 'GR', 'BB'): xlist[x] = 'B'
        elif xlist[x] in ('BR'. 'RB', 'GG'): xlist[x] = 'G'
    return ''.join(xlist)

def main(xrow):
    nrow = []
    for i in range(len(xrow)-1):
        nrow.append(xrow[i] + xrow[i+1])
    return(nrow)
        
def triangle(row):
    global again
    again = assign(main(row))
    print(row)
    print(again)
    for k in range(len(row)-1):
        again = assign(main(again))
    return again

你可以这样做:

s =  'RGBG'

dict_map = {
    'BG':'R',
    'GB':'R',
    'RR':'R',
    'RG':'B',
    'GR':'B',
    'BB':'B',
    'BR':'G',
    'RB':'G',
    'GG':'G'
    }

def process(s):
    while len(s)!=1:
        s = "".join([dict_map["".join(x)] for x in zip(s[:-1], s[1:])])
    return s

print(process(s))
# B

让我们分解一下:

您可以使用字典根据键将值转换为其他值:

dict_map["BG"]将返回“R”。 要使用字典,我们需要一个包含 2 个字符的元素列表。

我们使用以下命令创建该列表: [x for x in zip(s[:-1], s[1:])]这将返回重叠元组的列表。 例如(“R”,“G”)

由于我们不能将此元组与字典一起使用,因此我们将它们"".join()在一起,从而产生例如“RG”。

现在我们通过使用dict_map["RG"]询问字典哪些值用于该键,并在本例中得到“R”。

整个事情在这里完成: [dict_map["".join(x)] for x in zip(s[:-1], s[1:])]

现在我们又有了一个翻译值列表。 我们再次将它"".join()在一起得到一个新的字符串:“BRR”。 我们重复整个过程,直到字符串的长度为 1。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM