在python中创建元组的秩

2024-09-30 08:23:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我该怎么做? 从这个例子开始

         Id,  Id2    CCC
        [  (A123 A120 '2011-03'), 
  LL=     (A133 A123 '2011-03'),
         ( D123 D120 '2011-04'),
          (D140 D123 '2011-04'),]

我试着得到这个,给每个元组加上秩。在

^{pr2}$

我得到了这样的结论:

        [(A123, A120 ,'2011-03'), 
  LL=     (A133, A123, '2011-03),
         ( D123, D120, '2011-04),
          (D140, D123, '2011-04),1,2,3,4]

Tags: id例子元组cccllid2结论pr2
3条回答
for i in range(len(LL)):
        RowId = i+1
        LL[i].append(RowId)  

请测试一下。在

import pprint
LL= [ ('A123', 'A120', '2011-03'),
      ('A133', 'A123', '2011-03'),
      ('D123', 'D120', '2011-04'),
      ('D140', 'D123', '2011-04'),]
LL = [row+(i,) for i,row in enumerate(LL,1)]
pprint.pprint(LL)

收益率

^{pr2}$

以下是一些解释:

我们从如下定义的LL开始:

In [28]: LL
Out[28]: 
[('A123', 'A120', '2011-03'),
 ('A133', 'A123', '2011-03'),
 ('D123', 'D120', '2011-04'),
 ('D140', 'D123', '2011-04')]

第一个技巧是使用enumerate

In [30]: list(enumerate(LL))
Out[30]: 
[(0, ('A123', 'A120', '2011-03')),
 (1, ('A133', 'A123', '2011-03')),
 (2, ('D123', 'D120', '2011-04')),
 (3, ('D140', 'D123', '2011-04'))]

这与您想要的很接近,只是“rank”从0开始计数,并被放在行的前面而不是末尾。我们可以告诉enumerate从1开始计数,使用enumerate(LL,1),我们可以使用list comprehension将排名放在行的末尾:

In [31]: [row+(i,) for i,row in enumerate(LL,1)]
Out[31]: 
[('A123', 'A120', '2011-03', 1),
 ('A133', 'A123', '2011-03', 2),
 ('D123', 'D120', '2011-04', 3),
 ('D140', 'D123', '2011-04', 4)]

在列表理解中,row是一个类似('A123', 'A120', '2011-03')的元组, 并且row+(i,)是元组的和:

In [32]: ('A123', 'A120', '2011-03')+(1,)
Out[32]: ('A123', 'A120', '2011-03', 1)

这就是如何构造列表理解的每一行。在

您可以使用enumerate创建秩变量(从1开始添加1),并创建新元组的新列表,因为元组是不可变的,这就是我们创建新元组的原因。在

例如,您的列表中也应包括:

In [1]: LL=[(1,2,3),(1,2,3)]

In [2]: [j+(i+1,) for i,j in enumerate(LL)]
Out[2]: [(1, 2, 3, 1), (1, 2, 3, 2)]

相关问题 更多 >

    热门问题