我有两个列表。 一个是普通列表,另一个是 2D 列表。 我需要从列表 1 中取出 4 个条目,并将它们(最好按照一定的顺序(如推送它们(添加到第二个 2d 列表的每个条目的前面。
我需要下面列表的前四件
['15', '15:09 WED JAN 10 2018', 'Endcrinology', '0', '20', '0:00', '', '1', '0', '0', '0', '0', '0', '1']
添加到列表二中的每个"值"条目...
(0, ['Check In', '', '1607-584-4547', 'Avail', '10:48', '3', '1', '1'])
(1, ['Check In', '', '1607-584-4514', 'Avail', '10:49', '2', '1', '12'])
(2, ['Check Out', '', '1607-584-4580', 'Avail', '10:46', '2', '0', '3'])
(3, ['Check Out', '', '1607-115-4068', 'AUX', '10:49', '0', '0', '8'])
我已经在迭代列表 2,以便在"真实数据"结束后删除一些导致 1-4 个元素组的选项卡,如下所示:
for element, value in enumerate(agentdata1):
if len(value) != 8:
agentdata1.pop(element)
我的想法是,仍然在 for 循环内但在 if 语句之外,我可以将这些值"推送"到列表中。 我已经搞砸了list.insert和list.append,但还没有快乐。 提前谢谢。
所需的输出如下:
(0, ['15', '15:09 WED JAN 10 2018', 'Endcrinology', '0','Check In', '', '1607-584-4547', 'Avail', '10:48', '3', '1', '1'])
(1, ['15', '15:09 WED JAN 10 2018', 'Endcrinology', '0','Check In', '', '1607-584-4514', 'Avail', '10:49', '2', '1', '12'])
(2, ['15', '15:09 WED JAN 10 2018', 'Endcrinology', '0','Check Out', '', '1607-584-4580', 'Avail', '10:46', '2', '0', '3'])
(3, ['15', '15:09 WED JAN 10 2018', 'Endcrinology', '0','Check Out', '', '1607-115-4068', 'AUX', '10:49', '0', '0', '8'])
就地修改列表,只需使用列表切片。首先,设置数据:
l2 = [(0, ['Check In', '', '1607-584-4547', 'Avail', '10:48', '3', '1', '1']),
(1, ['Check In', '', '1607-584-4514', 'Avail', '10:49', '2', '1', '12']),
(2, ['Check Out', '', '1607-584-4580', 'Avail', '10:46', '2', '0', '3']),
(3, ['Check Out', '', '1607-115-4068', 'AUX', '10:49', '0', '0', '8'])]
l1 = ['15', '15:09 WED JAN 10 2018', 'Endcrinology', '0', '20', '0:00', '', '1', '0', '0', '0', '0', '0', '1']
现在,一个简单的 for 循环:
for _, sub in l2:
sub[:0] = l1[:4]
你可以试试这个:
l1 = ['15', '15:09 WED JAN 10 2018', 'Endcrinology', '0', '20', '0:00', '', '1', '0', '0', '0', '0', '0', '1']
l2 = [(0, ['Check In', '', '1607-584-4547', 'Avail', '10:48', '3', '1', '1']), (1, ['Check In', '', '1607-584-4514', 'Avail', '10:49', '2', '1', '12']), (2, ['Check Out', '', '1607-584-4580', 'Avail', '10:46', '2', '0', '3']), (3, ['Check Out', '', '1607-115-4068', 'AUX', '10:49', '0', '0', '8'])]
final_list = [(a, l1[:4]+b) for a, b in l2]
输出:
[(0, ['15', '15:09 WED JAN 10 2018', 'Endcrinology', '0', 'Check In', '', '1607-584-4547', 'Avail', '10:48', '3', '1', '1']),
(1, ['15', '15:09 WED JAN 10 2018', 'Endcrinology', '0', 'Check In', '', '1607-584-4514', 'Avail', '10:49', '2', '1', '12']),
(2, ['15', '15:09 WED JAN 10 2018', 'Endcrinology', '0', 'Check Out', '', '1607-584-4580', 'Avail', '10:46', '2', '0', '3']),
(3, ['15', '15:09 WED JAN 10 2018', 'Endcrinology', '0', 'Check Out', '', '1607-115-4068', 'AUX', '10:49', '0', '0', '8'])]
假设你的第二个列表是
agentdata1 = [
(0, ['Check In', '', '1607-584-4547', 'Avail', '10:48', '3', '1', '1']),
(1, ['Check In', '', '1607-584-4514', 'Avail', '10:49', '2', '1', '12']),
(2, ['Check Out', '', '1607-584-4580', 'Avail', '10:46', '2', '0', '3']),
(3, ['Check Out', '', '1607-115-4068', 'AUX', '10:49', '0', '0', '8'])
]
您的第一个列表是
list1 = ['15', '15:09 WED JAN 10 2018', 'Endcrinology', '0',
'20', '0:00', '', '1', '0', '0', '0', '0', '0', '1']
首先,我们将列表 1 的前四个元素分开:
four_elements_list1 = list1[:4]
现在,有两种可能的方法:
更直观的是:
result = [] for element, value in agentdata1: result.append((element, four_elements_list1 + value))
更紧凑的是:
result = map(lambda (element, value): (element, four_elements_list1 + value), agentdata1)
您可以找到有关 lambda 函数的更多信息以更好地理解它。