如何在python中将升序的前半部分和降序排序?

时间:2018-11-01 08:09:43

标签: python list for-loop while-loop

我有一个python列表[1,2,3,4,5]我必须打印[1,2,3,4,5,5,4,3,2,1]。

请建议如何(同时或连续)进行循环

4 个答案:

答案 0 :(得分:1)

使用for循环:

>>> l = [1, 2, 3, 4, 5]
>>> res = []
>>> for e in reversed(l):
...     res.append(e)
...     res.insert(0, e)
>>> res
[1, 2, 3, 4, 5, 5, 4, 3, 2, 1]

如果列表未排序,请使用reversed而不是sorted,并将反向标记设置为True

>>> l = [4, 3, 1, 5, 2]
>>> res = []
>>> for e in sorted(l, reverse=True):
...     res.append(e)
...     res.insert(0, e)
... 
>>> res
[1, 2, 3, 4, 5, 5, 4, 3, 2, 1]

而且,对于更高效的版本,我建议使用迭代器:

>>> import itertools
>>> l = sorted([4, 3, 1, 5, 2])
>>> res = list(itertools.chain(l, reversed(l)))
>>> res
[1, 2, 3, 4, 5, 5, 4, 3, 2, 1]

答案 1 :(得分:0)

您不需要循环。只需对源列表和反向列表进行排序和串联即可。

a = [2, 1, 5, 4, 3]
a = sorted(a)
print(a + a[::-1])

答案 2 :(得分:0)

就像您说的是排序列表一样(对吗?),

print(l+l[::-1])

或者:

print(l+reversed(l))

两种情况下,输出为:

[1, 2, 3, 4, 5, 5, 4, 3, 2, 1]

答案 3 :(得分:0)

尝试一下:

a, b = eval('[1,2,3,4,5],'*2);b.reverse();print(a+b)

输出:

C:\Users\Desktop>py x.py
[1, 2, 3, 4, 5, 5, 4, 3, 2, 1]