-6

我有以下列表

[
    '<td>1</td>', '<td>2</td>', '<td>3</td>', '<td>4</td>',
    '<td>A</td>', '<td>B</td>', '<td>C</td>', '<td>D</td>',
    '<td>I</td>', '<td>II</td>', '<td>III</td>', '<td>IV</td>',
]

对此进行排序以匹配的算法是什么:

[
    '<td>1</td>', '<td>A</td>', '<td>I</td>,
    '<td>2</td>', '<td>B</td>', '<td>II</td>,
    '<td>3</td>', '<td>C</td>', '<td>III</td>,
    '<td>4</td>', '<td>D</td>', '<td>IV</td>,
]

我不知道如何描述编程俚语的变化,除了缩进顺序现在应该垂直而不是水平。我只知道原始列表的序列长度(在本例中为 4)

这不是家庭作业,我只是在绞尽脑汁在外壳上解决这个问题,任何帮助将不胜感激!

4

2 回答 2

3

这不是排序,而是换位

您的数组元素编号为 [0, 1, 2, 3, 4, ..] 并且您希望将它们移动到 [0, 4, 8, 1, 5, 9, 2, ..],即

newpos(x) = oldpos(x)/4 + 4*(oldpos(x) % 4)

其中前半部分是新的号,后半部分是新的号。

于 2013-10-05T12:42:38.097 回答
3
Data = [
    '<td>1</td>', '<td>2</td>', '<td>3</td>', '<td>4</td>',
    '<td>A</td>', '<td>B</td>', '<td>C</td>', '<td>D</td>',
    '<td>I</td>', '<td>II</td>', '<td>III</td>', '<td>IV</td>',
]

lists, result = [], []
for i in range(0, len(Data), 4):
    lists.append(Data[i:i+4])

for currentList in zip(*lists):
    result += list(currentList)
print result

输出

['<td>1</td>', '<td>A</td>', '<td>I</td>',
 '<td>2</td>', '<td>B</td>', '<td>II</td>',
 '<td>3</td>', '<td>C</td>', '<td>III</td>',
 '<td>4</td>', '<td>D</td>', '<td>IV</td>']
于 2013-10-05T12:49:46.280 回答