首页 > 解决方案 > 如何将 python __len__() 转换为 java

问题描述

我一直致力于将 python 代码转换为与我的研究工作相关的 java,我在 Python len () 对象中有一个查询。我的问题在 [::-1] 作为提供的代码。

我试图通过简单的增量循环在java中做到这一点,但它不起作用。它在 temp_line.split('$target/')[1] 处给出数组越界异常。

 for i in range(0, script_lines.__len__())[::-1]:
   temp_line = script_lines[i]
        if "$target/" in temp_line and "cp" in temp_line:
           Case_num = 1 + int(temp_line.split('$target/')[1].split('.txt')[0])
            return Case_num

我想知道代码中的 [::-1] 是什么意思,以便我可以将其转换为 java。

标签: javapython

解决方案


x[::-1]在 Python 中的意思是“序列的所有元素x从最后一个开始,以第一个结束)。生成从to的range(y)所有数字。因此,您的行将生成从to 0 的最后一个索引开始的索引。0y - 1script_lines

虽然它不是很好的 Python 代码 - 它创建了一个不需要的列表。使用__len__方法也很不受欢迎,作为一种管道方法;而是使用瓷器len功能。写它的更好方法是

for i in range(len(script_lines) - 1, -1, -1):

(开始于,在添加每次迭代时length - 1在到达之前停止。)但是由于实际上在 fetching 之后从未提及,因此更好的重写将是-1-1itemp_line

for temp_line in reversed(script_lines):

Java没有类似的东西reversed,所以你必须在索引上使用循环:

for (int i = scriptLines.size() - 1; i >= 0; i--) {

推荐阅读