迭代列表列表并显式调用变量

时间:2015-07-29 16:05:07

标签: python list if-statement

以下是我目前正在处理的列表清单的一小段内容。

[(datetime.datetime(2015, 7, 27, 17, 33, 1), 'derivative', 74L, 980750911L, 150.
49), (datetime.datetime(2015, 7, 27, 17, 33, 1), 'other', 211L, 2519735424L, 383
.99), (datetime.datetime(2015, 7, 27, 17, 33, 1), 'source', 9L, 68556768874L, 31
27.9)]

现在,我的最终游戏目标是遍历此列表列表以分隔值,以便我可以将它们写入excel文件。我的问题是价值观的分离。例如,我知道如何使用此

打印列表列表中每个值的所有值
for x in data:
    for x in x:
        print x 

执行后返回格式如此。

2014-06-28 21:50:54
source
27
14144158722
1425.26

现在,我如何在该返回中调用一个特定值,例如,如果我想创建一个if语句,如果x在其内容中有源,则只在列表列表中打印出x。我试图彻底解释这一点,准备提供任何澄清。

2 个答案:

答案 0 :(得分:0)

首先,不要在内循环中重复使用名称x;使用描述性名称。您可以在外部循环中测试包含:

for row in data:
    if 'source' in row:
        for column in row:
            print column

您可能希望将此限制为特定列;你的每一行都有一个特定的结构,每一列都有一种类型的数据;第一列是日期,第二列是您要测试的字符串:

for row in data:
    if row[1] == 'source':
        for column in row:
            print column

您可以将行解包成单独的变量:

for timestamp, type_, num1, num2, num3 in data:
    if type_ == 'source':
        print timestamp
        print num1
        print num2
        print num3

答案 1 :(得分:0)

在迭代到内部列表之前创建if语句,以便只在满足if条件时进行迭代。

另外,你不应该这样做 - for x in x,这很令人困惑。

示例 -

>>> data = [(datetime.datetime(2015, 7, 27, 17, 33, 1), 'derivative', 74, 980750911, 150.49), (datetime.datetime(2015, 7, 27, 17, 33, 1), 'other', 211, 2519735424, 383.99), (datetime.datetime(2015, 7, 27, 17, 33, 1), 'source', 9, 68556768874, 3127.9)]
>>> for x in data:
...     if 'source' in x:
...             for y in x:
...                     print y
...
2015-07-27 17:33:01
source
9
68556768874
3127.9