微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用表达式的数组 ConvertAll

如何解决使用表达式的数组 ConvertAll

需要帮助让这段代码工作。

import itertools
import linetimer

def subsets_lists(s):
    if not s: return [[]]
    rest = subsets_lists(s[1:])
    return rest + list(map(lambda x: [s[0]] + x,rest))

def subsets_generator(s):
    if not s:
        yield []
    else:
        for x in subsets_generator(s[1:]):
            yield x
            yield [s[0]] + x

def subsets_iterable(s):
    iterator = iter(s)
    try:
        item = next(iterator)
    except stopiteration:
        yield []
    else:
        for x in subsets_iterable(iterator):
            yield x
            yield [item] + x

def powerset(iterable):
    "Source: https://docs.python.org/3/library/itertools.html#itertools-recipes"
    s = list(iterable)
    return itertools.chain.from_iterable(
        itertools.combinations(s,r)
        for r in range(len(s)+1)
    )

for repeats in 1,10:
    for size in 4,10,14,20:
        with linetimer.CodeTimer(f"l = subsets_lists(range({size})) repeats={repeats}"):
            for _ in range(repeats):
                l = subsets_lists(range(size))
        with linetimer.CodeTimer(f"g = subsets_generator(range({size})) repeats={repeats}"):
            for _ in range(repeats):
                l = subsets_generator(range(size))
        with linetimer.CodeTimer(f"g = subsets_gen_iterable(range({size})) repeats={repeats}"):
            for _ in range(repeats):
                l = subsets_iterable(range(size))
        with linetimer.CodeTimer(f"l = list(subsets_generator(range({size}))) repeats={repeats}"):
            for _ in range(repeats):
                l = list(subsets_generator(range(size)))
        with linetimer.CodeTimer(f"l = list(subsets_gen_iterable(range({size}))) repeats={repeats}"):
            for _ in range(repeats):
                l = list(subsets_iterable(range(size)))
        with linetimer.CodeTimer(f"l = list(powerset(range({size}))) size={size} repeats={repeats}"):
            for _ in range(repeats):
                l = list(powerset(range(size)))

这失败了 System.ArgumentException: 'System.Funcvar splits = rawTokens[startIndex + 2].Value.Split(','); var paramk = Expression.Parameter(typeof(String),"item"); var converter = Expression.Lambda(Expression.Convert( paramk,lToken.CorrespondingType),paramk); var method = typeof(Array).getmethod("ConvertAll").MakeGenericmethod(new Type[] { typeof(string),lToken.CorrespondingType }); var arrayBuilder = Expression.Call(method,Expression.Constant(splits),converter); 2[System.String,System.String]' 类型的表达式'System.String[] ConvertAll[String,String](System.String[],System .Converter`2[System.String,System.String])''

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。