python代码如下:
patterns = [s for s in"""
ATGCG
GCATG
CATGC
AGGCA
GGCAT
""".split() if s]
for i1, p1 in enumerate(patterns):
for i2, p2 in enumerate(patterns):
if p1[1:] == p2[:len(p2) - 1] and i1 != i2:
print (p1 + ' -> ' + p2)
和输出:
AGGCA -> GGCAT
CATGC -> ATGCG
GCATG -> CATGC
GGCAT -> GCATG
我想把它翻译成c#但是我被困在循环和特别是 如果p1[1:]==p2[:len(p2)-1]和i1!=i2,要枚举(模式)有一个函数
public static void Each<T>( this IEnumerable<T> ie, Action<T, int> action )
{
var i = 0;
foreach ( var e in ie ) action( e, i++ );
}
patterns = "ATGCG\nGCATG\nCATGC\nAGGCA\nGGCAT";
var elems = patterns.Split(new[] { "\n" }, StringSplitOptions.RemoveEmptyEntries);
var strings = new List<string>();
strings.Each( ( elems , n ) =>
{
} );
如何完成代码?你知道吗
LINQ解决方案,使用
SelectMany
获得项目对,使用Skip
/Take
/SequenceEqual
比较string
部分:results
将是匿名类型对象的列表,具有两个字符串属性:p1
和p2
。您可以使用标准的foreach
循环轻松地迭代results
:打印与python代码完全相同的内容。你知道吗
不需要
Skip
/Take
/SequenceEqual
,使用string.Substring
和标准的string
相等性检查就可以实现相同的效果。将解决方案的Where
部分替换为以下内容:相关问题 更多 >
编程相关推荐