java - 如何将 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。
解决方案
x[::-1]
在 Python 中的意思是“序列的所有元素x
从最后一个开始,以第一个结束)。生成从to的range(y)
所有数字。因此,您的行将生成从to 0 的最后一个索引开始的索引。0
y - 1
script_lines
虽然它不是很好的 Python 代码 - 它创建了一个不需要的列表。使用__len__
方法也很不受欢迎,作为一种管道方法;而是使用瓷器len
功能。写它的更好方法是
for i in range(len(script_lines) - 1, -1, -1):
(开始于,在添加每次迭代时length - 1
在到达之前停止。)但是由于实际上在 fetching 之后从未提及,因此更好的重写将是-1
-1
i
temp_line
for temp_line in reversed(script_lines):
Java没有类似的东西reversed
,所以你必须在索引上使用循环:
for (int i = scriptLines.size() - 1; i >= 0; i--) {
推荐阅读
- linux - 具有特定扩展名的文件名的文件路径
- node.js - node.js 这里有什么问题..试图理清欢迎角色和欢迎消息
- java - ActiveMQ 代理无法在客户端崩溃后遵守最大交付尝试
- python - 经理不可用;'auth.User' 已在 django 中替换为 'User.User'
- javascript - 需要从 iframe 打开新窗口
- azure - 反向代理子文件夹到子文件夹
- python - 无法在 esp8266 上使用 UART 从 LE-01MR 电表和使用 rs485 读取数据
- visual-studio-2019 - VS 2019 更新到 16.8.4 破坏了我的每一个解决方案
- android - 将图标与搜索栏顶部对齐
- .net - 应用 B 打开时,应用 A 中的会话被清除