繁体   English   中英

在java和python中比较char到string索引

[英]Comparing char to string index in java vs python

我意识到有许多答案只是解决了如何在Java中实现它,但我正在寻找一个概念上类似于我可能在Python程序中执行的实现的解决方案 ,因为这对我来说更为熟悉。

我的Java函数cgRatio接受一个DNA字符串并遍历每个索引来计算字符串中“C”和“G”字符值的出现,并返回相对于字符串长度的比率。 例如,如果我传递以下字符串作为函数的参数: "ATGGCGCATTAA"我将获得5/12的返回值或4.1666...的浮点数4.1666...

在Python中,这个函数可以写成:

def cgRatio(dna):
count = 0
for i in range(len(dna)):
    if dna[i] == "C" or dna[i] == "G":
        count += 1
return 1.0 * count/len(dna)

简单的print cgRatio("ATGGCGCATTAA")将产生所需的结果。

我已经看过诸如获取dna.charAt(i)解决方案,并将其转换回字符串或在函数的开头实例化新的char对象以进行比较。 对于这样一个简单的任务来说,这似乎过于复杂。 Python在这项任务中是否优越,或者在Java中有更有效的方法吗?

简单的java代码是:

for (int i = 0; i < dna.length(); i++) {
  char c = dna.charAt(i);        
  if (c == 'C' || c == 'G') { 
    count++;
  }
}
return (double)count / dna.length();

绝对没有理由将字符转换为“字符串”以便比较它们!

如果您正在寻找“更少”的代码解决方案,您可以使用“for each”样式:

for (char c : dna.toCharArray()) {

易于理解,易于阅读,但代价是创建一个新的char数组

暂无
暂无

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

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