【发布时间】:2015-08-03 19:47:50
【问题描述】:
我正在寻找一种方法来优化我拥有的当前代码:
for result in results:
if result != '':
if isinstance(result, list):
for subresult in result:
if subresult != '':
worksheet.write(r, c, subresult)
c += 1
else:
worksheet.write(r, c, result)
c += 1
我也在特殊情况下使用这个:
for result in results:
if isinstance(result, list):
for subresult in result:
worksheet.write(r, c, subresult)
c += 1
else:
worksheet.write(r, c, result)
c += 1
我有一个列表,在某些情况下只包含一个值,而在其他情况下它包含多个值(即另一个列表)。
以下是列表可能包含的示例:
results = ['', '', '', '390', '66', ['Name', 'SerialNumber', 'Model', 'Year'], 'SW_Version', ['HD_Loc', 'HD_Model', 'HD_FW', 'HD_SerialNumber', 'Man_Yr', 'Man_Mth'], '', '', '']
最终我希望能够将每个值输出到 excel 中自己的列。在某些情况下,我只想输出列表中包含值的部分,这是由我提供的代码的第一个 sn-p 执行的。在其他情况下,我想输出列表的所有部分,无论它是否有值,这是由我提供的代码的第二个 sn-p 执行的。
我已经看到 for 循环和一些操作语句(比如说 print)被组合成一行 python 代码的实例,但我无法让该语法与 sn- ps 我已经提供了。
此代码目前正在以我实现它的方式工作,我只是在寻找一种缩短/优化它的方法,因为我拥有它的程序开始变得相当大并且能够缩短它会有所帮助我也在缩短程序的其他部分。
提前致谢!
编辑:在这两种情况下,它的输出顺序都很重要,我希望它按照当前的顺序输出(只需减去 '' 中的一种情况)。
【问题讨论】:
-
那么您想将列表列表转换为简单列表吗?
-
实际上是的。当我执行上述代码时,我得到
['', '', '', '390', '66', 'Name', 'SerialNumber', 'Model', 'Year', 'SW_Version', 'HD_Loc', 'HD_Model', 'HD_FW', 'HD_SerialNumber', 'Man_Yr', 'Man_Mth', '', '', ''],这就是我想要输出到我的 excel 文件的内容(每个都在自己的单元格中。) -
看看这个链接和OP中的链接stackoverflow.com/questions/952914/…
-
杰里米,我试过了,但我收到了这个:
['3', '9', '0', '6', '6', 'Name', 'SerialNumber', 'Model', 'Year', 'S', 'W', '_', 'V', 'e', 'r', 's', 'i', 'o', 'n', 'HD_Loc', 'HD_Model', 'HD_FW', 'HD_SerialNumber', 'Man_Yr', 'Man_Mth']看起来列表中没有的任何东西都会被字符分开,但列表中的任何东西都很好。 -
我发布了一个暂定的解决方案。我会试着把它清理一下
标签: python list python-2.7 expandable