3-Java Java到Python的转换
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了3-Java Java到Python的转换,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2090字,纯文字阅读大概需要3分钟。
内容图文
![3-Java Java到Python的转换](/upload/InfoBanner/zyjiaocheng/725/83e60e9b3c9c434598fe95f29ecca2e2.jpg)
从:
public class ThreeSum
{
public static int count(int[] a)
{
int N = a.length;
int count = 0;
for (int i = 0; i < N; i++)
for (int j = i+1; k < N; j++)
for (int k = j+1; k<N; k++)
if (a[i] + a[j] + a[k] == 0)
count++;
return count;
}
public static void main(String[] args)
{
int[] a = In.readInts(args[0]);
StdOut.printIn(count(a));
}
}
至:
a = [30,-40,-20,-10,40,0,10,5]
def check(list):
N = len(list)
count = 0
i = 0
while i < N:
i += 1
j = i+1
while j < N:
j += 1
k = j+1
while k < N:
k += 1
if a[i]+a[j]+a[k] == 0: #<-- this is the main part with error "list index out of range"
count += 1
return count
print count
check(a)
它应该检查列表中的所有数字3对的总和等于0.
我不知道该用什么而不是“for(int i = 0; i< N; i)”.我认为我的while循环做同样的事情,或者我错了?
解决方法:
Python的for语句只能遍历一个可迭代的.因此,如果要循环一系列数字,则使用范围对象作为可迭代.那么,这个Java:
for (int k = j+1; k<N; k++)
…变成这个Python:
for k in range(j+1, N):
在许多情况下,你实际上并不想这样做,这是值得的.如果你要使用k的唯一东西是[k],你可以迭代一个自己.但是,在这种特殊情况下,您需要i和j来设置j和k的限制. (您仍然可以使用枚举编写循环,但我认为这会妨碍这里.)
所以,整个事情可以是:
N = len(a)
count = 0
for i in range(N):
for j in range(i+1, N):
for k in range(j+1, N):
if a[i]+a[j]+a[k] == 0:
count += 1
return count
但是,如果您将其转换为生成器转换管道,我认为这将更清晰:
N = len(a)
sums = (a[i]+a[j]+a[k]
for i in range(N) for j in range(i+1, N) for k in range(j+1, N))
zeros = (n for n in sums if n == 0)
return sum(1 for _ in zeros)
或者,如果你想对它进行编码 – 高尔夫,那么当用作整数时,利用True和False为1和0这一事实:
N = len(a)
return sum(not a[i]+a[j]+a[k]
for i in range(N) for j in range(i+1, N) for k in range(j+1, N))
但是一旦你用这些术语思考,有没有办法在一步中生成所有这些[i],a [j]和[k]?是的,这些只是a的3个元素的所有可能组合.感谢@alfasin在我面前搞清楚这??一点,并且比以往任何时候都更简洁地写出来. :)所以:
combs = itertools.combinations(a)
sums = map(sum, combs)
zerosums = (n for n in sums if n == 0)
return sum(1 for _ in zerosums)
或者,再次打码:
return sum(not sum(c) for c in itertools.combinations(a))
内容总结
以上是互联网集市为您收集整理的3-Java Java到Python的转换全部内容,希望文章能够帮你解决3-Java Java到Python的转换所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。