Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python列表中选择一些元素_Python_List_Sequence - Fatal编程技术网

在python列表中选择一些元素

在python列表中选择一些元素,python,list,sequence,Python,List,Sequence,我有以下清单: [[10:09:56.033,ComponentB,2,DEBUG,description], [10:09:56.034,ComponentB,1,DEBUG,description], [10:09:57.034,ComponentB,2,DEBUG,description], [10:09:57.045,ComponentB,2,DEBUG,description]] 如何打印所有时间戳。比如: 10:09:56.033 10:09:56.034 10:09:57.034

我有以下清单:

[[10:09:56.033,ComponentB,2,DEBUG,description],
[10:09:56.034,ComponentB,1,DEBUG,description],
[10:09:57.034,ComponentB,2,DEBUG,description],
[10:09:57.045,ComponentB,2,DEBUG,description]]
如何打印所有时间戳。比如:

10:09:56.033
10:09:56.034
10:09:57.034
10:09:57.045
另外,如何每秒只打印时间戳,如:

10:09:56.033
10:09:56.034

假设
my_list
是您的列表,第一个元素是字符串

一,

二,


您可以使用
itertools.groupby
datetime.strtime

from itertools import groupby
from datetime import datetime
def solve(item):
    dt = datetime.strptime(item[0], '%H:%M:%S.%f')
    return dt.hour, dt.minute, dt.second

lis = [['10:09:56.033', 'ComponentB', 2, 'DEBUG', 'description'], ['10:09:56.034', 'ComponentB', 1, 'DEBUG', 'description'], ['10:09:57.034', 'ComponentB', 2, 'DEBUG', 'description'], ['10:09:57.045', 'ComponentB', 2, 'DEBUG', 'description']]

for k, g in groupby(lis, key=solve):
    print '\n'.join(x[0] for x in g) + '\n'

  
输出:

10:09:56.033
10:09:56.034

10:09:57.034
10:09:57.045

datetime
对象转换的其他替代方法是使用
str.partition('.')
(by@jonclements:):


印制所有邮票:

stamps = [
    ['10:09:56.033', 'ComponentB', 2, 'DEBUG', 'description'],
    ['10:09:56.034', 'ComponentB', 1, 'DEBUG,description'],
    ['10:09:57.034', 'ComponentB', 2, 'DEBUG,description'],
    ['10:09:57.045', 'ComponentB', 2, 'DEBUG,description']
]

for var in stamps:
    print var[0]
至于每秒打印(hcwhsa答案的变体,使用lambdas而不是单独的函数):


这应该更快。

首先我会修复它,因为该列表无效。请发布一些您尝试过但不起作用的代码。如果我们知道您在尝试什么,我们可以提供帮助。@sid16rgt我正在尝试以下代码:row_taker=[row.split()for row in log_file]print(row_taker[0][0]),但显然它只会打印一项。对于行中行选取器:打印行选取器[0]可以这样做:对于行中行选取器:对于prv,nxt在zip中(行选取器,行选取器[1:]):如果i10:09:56.033 10:09:56.034 10:09:57.034 10:09:57.045
for k, g in groupby(lis, key=lambda x:x[0].partition('.')[0]):
    print '\n'.join(x[0] for x in g) + '\n'
stamps = [
    ['10:09:56.033', 'ComponentB', 2, 'DEBUG', 'description'],
    ['10:09:56.034', 'ComponentB', 1, 'DEBUG,description'],
    ['10:09:57.034', 'ComponentB', 2, 'DEBUG,description'],
    ['10:09:57.045', 'ComponentB', 2, 'DEBUG,description']
]

for var in stamps:
    print var[0]
from itertools import groupby


lis = [['10:09:56.033', 'ComponentB', 2, 'DEBUG', 'description'],
       ['10:09:56.034', 'ComponentB', 1, 'DEBUG', 'description'],
       ['10:09:57.034', 'ComponentB', 2, 'DEBUG', 'description'],
       ['10:09:57.045', 'ComponentB', 2, 'DEBUG', 'description']]

for k, g in groupby(lis, key=lambda item: item[0][0:8]):
    print k
    print '\n'.join(x[0] for x in g) + '\n'