GVKun编程网logo

如何通过行而不是变量中的字符进行for循环?

15

在本文中,您将会了解到关于如何通过行而不是变量中的字符进行for循环?的新资讯,并给出一些关于for循环方法是变量、For循环性能:将数组长度存储在变量中、javascript–如何在不改变循环结构的

在本文中,您将会了解到关于如何通过行而不是变量中的字符进行for循环?的新资讯,并给出一些关于for循环 方法是变量、For循环性能:将数组长度存储在变量中、javascript – 如何在不改变循环结构的情况下将字符串前置到for循环中的字符串变量?、JAVA链接列表如何使用for循环进行循环?的实用技巧。

本文目录一览:

如何通过行而不是变量中的字符进行for循环?

如何通过行而不是变量中的字符进行for循环?

我有以下代码可以SSH到节点并从其他设备中找到RSSI。

bot_ipv6是ssh到的ipv6地址的列表,脚本使用pexpect来ssh。

for address in bot_ipv6:    session=spawn(''ssh -6 root@''+address+''%wlan0'')    #session.logfile = stdout    session.expect(''password:'')    session.sendline("123456")    session.expect(prompt)    session.sendline("iwlist wlan0 scan")    session.expect(prompt)    data=session.before    session.close()

数据现在包含该iwlist wlan0 scan设备的输出。

我想浏览数据并仅获取地址及其对应的RSSI。当命令可以在本地运行并输出到文件时,此代码有效:

with open("rssi.txt") as fd:    for line in fd:        cell_line = match(line,"Cell ")        if cell_line != None:            cells.append([])            line = cell_line[-27:]        cells[-1].append(line.rstrip())for cell in cells:    level.append(matching_line(cell,"Quality=").split()[2].split(''='')[1])    address.append(matching_line(cell,"Address: "))scanned=dict(zip(address, level))

匹配和匹配行是在其中定义的函数,在其他地方则在文件中查找以将字符与所要查找的字符进行匹配。

我的问题是我不知道如何将数据输出到文件,但是如果我尝试像使用文件时那样遍历输出数据中的行:

for line in data:        cell_line = match(line,"Cell ")        if cell_line != None:            cells.append([])            line = cell_line[-27:]        cells[-1].append(line.rstrip())

而不是线条,它循环遍历每个字符。

如何将输出打印到可以像以前一样在本地打开并扫描的文件,或者循环遍历数据中的行而不是单个字符?

以下是数据外观的示例(要获得此数据,我将打印数据放入脚本中,然后从输出中复制并粘贴到此处,希望不会丢失任何格式):

iwlist wlan0 scanwlan0     Scan completed :          Cell 01 - Address: 02:CA:FF:EE:BA:BE                    Channel:11                    Frequency:2.462 GHz (Channel 11)                    Quality=47/70  Signal level=-63 dBm                      Encryption key:off                    ESSID:"nenenenenene-batman"                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s                              9 Mb/s; 12 Mb/s; 18 Mb/s                    Bit Rates:24 Mb/s; 36 Mb/s; 48 Mb/s; 54 Mb/s                    Mode:Ad-Hoc                    Extra:tsf=00000000f8083cfe                    Extra: Last beacon: 72ms ago                    IE: Unknown: 00136E656E656E656E656E656E652D6261746D616E                    IE: Unknown: 010882840B160C121824                    IE: Unknown: 03010B                    IE: Unknown: 06020000                    IE: Unknown: 32043048606C          Cell 02 - Address: D8:5D:4C:AF:C3:14                    Channel:11                    Frequency:2.462 GHz (Channel 11)                    Quality=21/70  Signal level=-89 dBm                      Encryption key:on                    ESSID:"phome"                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 18 Mb/s                              24 Mb/s; 36 Mb/s; 54 Mb/s                    Bit Rates:6 Mb/s; 9 Mb/s; 12 Mb/s; 48 Mb/s                    Mode:Master                    Extra:tsf=000000ff16ee018d                    Extra: Last beacon: 3824ms ago                    IE: Unknown: 000570686F6D65                    IE: Unknown: 010882848B962430486C                    IE: Unknown: 03010B                    IE: Unknown: 2A0104                    IE: Unknown: 2F0104                    IE: Unknown: 32040C121860                    IE: Unknown: 2D1A7C181BFFFF000000000000000000000000000000000000000000                    IE: Unknown: 3D160B001700000000000000000000000000000000000000                    IE: Unknown: DD090010180203F4010000                    IE: Unknown: DD1E00904C337C181BFFFF000000000000000000000000000000000000000000                    IE: Unknown: DD1A00904C340B001700000000000000000000000000000000000000

答案1

小编典典

使用str.splitlines一个字符串分割成几行:

for line in data.splitlines():    # Do things.

for循环 方法是变量

for循环 方法是变量

怎样才能写一个循环,然后循环里面的变量是方法+其它变来变量,要实现的效果就是



For循环性能:将数组长度存储在变量中

For循环性能:将数组长度存储在变量中

考虑同一循环迭代的两个版本:

for (var i = 0; i < nodes.length; i++) {    ...}

var len = nodes.length;for (var i = 0; i < len; i++) {    ...}

后一种版本比前一种版本快吗?

答案1

小编典典

更新:16/12/2015

由于这个答案似乎仍然有很多观点,我想重新审视这个问题,因为浏览器和JS引擎不断发展。

我没有使用JSPerf,而是使用原始问题中提到的两种方法,编写了一些代码来遍历数组。我已将代码放入函数中,以分解功能,如在实际应用程序中希望的那样:

function getTestArray(numEntries) {  var testArray = [];  for (var i = 0; i < numEntries; i++) {    testArray.push(Math.random());  }  return testArray;}function testInVariable(testArray) {  for (var i = 0; i < testArray.length; i++) {    doSomethingAwesome(testArray[i]);  }}function testInLoop(testArray) {  var len = testArray.length;  for (var i = 0; i < len; i++) {    doSomethingAwesome(testArray[i]);  }}function doSomethingAwesome(i) {  return i + 2;}function runAndAverageTest(testToRun, testArray, numTimesToRun) {  var totalTime = 0;  for (var i = 0; i < numTimesToRun; i++) {    var start = new Date();    testToRun(testArray);    var end = new Date();    totalTime += (end - start);  }  return totalTime / numTimesToRun;}function runTests() {  var smallTestArray = getTestArray(10000);  var largeTestArray = getTestArray(10000000);  var smallTestInLoop = runAndAverageTest(testInLoop, smallTestArray, 5);  var largeTestInLoop = runAndAverageTest(testInLoop, largeTestArray, 5);  var smallTestVariable = runAndAverageTest(testInVariable, smallTestArray, 5);  var largeTestVariable = runAndAverageTest(testInVariable, largeTestArray, 5);  console.log("Length in for statement (small array): " + smallTestInLoop + "ms");  console.log("Length in for statement (large array): " + largeTestInLoop + "ms");  console.log("Length in variable (small array): " + smallTestVariable + "ms");  console.log("Length in variable (large array): " + largeTestVariable + "ms");}console.log("Iteration 1");runTests();console.log("Iteration 2");runTests();console.log("Iteration 3");runTests();

为了尽可能公平地进行测试,每个测试运行5次并取平均值。我还运行了包括阵列生成在内的整个测试3次。在我的计算机上的Chrome上进行的测试表明,使用每种方法所花费的时间几乎相同。

重要的是要记住,该示例只是一个玩具示例,实际上,从您的应用程序上下文中提取的大多数示例可能会产生不可靠的信息,因为您的代码正在执行的其他操作可能会直接或间接影响性能。

底线

确定最适合您的应用程序的最佳方法是亲自对其进行测试!JS引擎,浏览器技术和CPU技术不断发展,因此必须始终在应用程序上下文中为自己测试性能。值得一问的是,您是否根本没有性能问题,如果您不花时间进行对用户而言微不足道的微优化,则最好花费时间来修复错误和添加功能,从而使用户更快乐:)。

原始答案:

后者会稍快一些。该length属性不会遍历数组以检查元素数,但是每次在数组上调用该属性时,都必须取消对该数组的引用。通过将长度存储在变量中,循环的每次迭代都不需要数组取消引用。

javascript – 如何在不改变循环结构的情况下将字符串前置到for循环中的字符串变量?

javascript – 如何在不改变循环结构的情况下将字符串前置到for循环中的字符串变量?

如果我有这样的for循环:

var rows;
var len = z[0].length;
for ( var i = len; i--; ) {
     rows += "<tr><td>" + z[0].Marketer + "</td><td>";
 }

如何在不添加for循环结构的情况下将prepend附加到此字符串而不是将当前行追加?

var rows;
var len = z[0].length;
for ( var i = len; i--; ) {
     rows (prepend) "<tr><td>" + z[0].Marketer + "</td><td>";
 }

解决方法:

像这样:

rows = "<tr><td>" + z[0].Marketer + "</td><td>" + rows;

JAVA链接列表如何使用for循环进行循环?

JAVA链接列表如何使用for循环进行循环?

您好我正在尝试创建一个循环遍历链表的for循环.对于每个数据,它将单独列出.我想在这里学习链表,所以没有数组建议请.有人知道怎么做吗?

示例输出:

> 187航班
> 501航班

我之前的代码:

public static LinkedList<String> Flights = new LinkedList<String>();

public flightinfo(){
String[] flightNum = {"187","501"};
        for (String x : flightNum)
        Flights.add(x);

                for (???)


}

解决方法

只需使用增强的for循环,就像使用数组一样:

for(String flight : flights) {
   // do what you like with it
}

关于如何通过行而不是变量中的字符进行for循环?的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于for循环 方法是变量、For循环性能:将数组长度存储在变量中、javascript – 如何在不改变循环结构的情况下将字符串前置到for循环中的字符串变量?、JAVA链接列表如何使用for循环进行循环?等相关知识的信息别忘了在本站进行查找喔。

本文标签: