列表中的最后一项不计算在内

时间:2017-09-02 18:44:09

标签: python

我正在编写一个学校作业的程序,我必须使用.csv文件中的数据。当我打开文件时,我读了它,并保持未格式化(所有项目都是字符串)。我只用逗号分隔它们并在列表中创建列表。我需要找到列表中的最后一项(有3个列表具有相同的最后一项)。它在我的邮件程序中不起作用所以我使用python shell来确认出错了。

>>> l=[['2', '13:00', '22', '0', 'True', '5\n'], ['-1', '14:00', '22', '0', 'True', '5\n'], ['2', '15:00', '23', '0', 'True', '5\n']]
>>> "5\n" in l
False
>>> "5" in l
False
>>> 

这是它给我的回应。为什么看不到最后一项?为什么会有这个不必要的“新行”字符?格式化的版本显示为5(整数),所以它显然就在那里。

4 个答案:

答案 0 :(得分:2)

您的测试适用于任何子项目,例如:

>>> '2' in l
False

x in y检查 直接会员资格。所以如果你问的话应该会有用:

>>> ['2', '13:00', '22', '0', 'True', '5\n'] in l
True

如果您想检查第二个级别成员资格,可以使用:

any("5\n" in li for li in l)

True

>>> any("5\n" in li for li in l)
True

答案 1 :(得分:1)

如果您想要所有最后项目的列表,您可以进行简单的列表理解:

last_items = [m[-1] for m in l]

演示:

>>> last_items = [m[-1] for m in l]

>>> last_items
['5\n', '5\n', '5\n']

答案 2 :(得分:0)

您有一份清单清单。这意味着您必须先索引父列表,然后才能检查项目是否在子列表中。

'5\n' in l[2]

l[2]访问列表中的第3项(因为索引在Python中基于0)。第3个项目本身就是一个列表,然后您可以进行in检查。

如果您希望能够轻松对列表清单进行in检查,那么您运气不佳。您需要编写一个循环遍历父列表中的每个项目,然后对每个子列表进行in检查,直到找到匹配项。

found = False # track whether we found something or not
for child in l:
    if '5\n' in child:
        found = True
        break # we found it, no need to keep looping

if found:
    # if we found something, do something

答案 3 :(得分:0)

$group_num = 0;

$col = collect($data);

$col->groupBy(function ($item, $key) use (&$group_num, $col)
{

    if (!isset($col[$key - 1]))       
        return "block_" . $group_num;

    if ($item['user_id'] !== $col[$key - 1]['user_id'])
        $group_num++;

    return "block_" . $group_num;

})
->toArray();