2015-09-05 45 views
-2

我正在阅读有关数组的知识,我在想如何从右到左排列数组中的元素。从右到左对数组进行排序而不使用默认函数

例如:

n = 10 
numbers = [] 
for i in range(1, n+1): 
    numbers.append(i) 
print(numbers) 

我怎么能显示来自最后一个组件到最前面的一个(10,9,8 ...)使用基本工具,如循环和条件?

,除此之外的选择:

for i in range(-1, (-len(numbers) - 1), -1): 
     print(numbers[i]) 

回答

2

你是不是对数组排序。你正试图用特定的顺序来构造一个。你可以直接使用range来做到这一点。 range可以用三个参数startstopstep来调用。这使您可以构建一个范围10, 9, ...

的Python 2:

numbers = range(10, 0, -1) 
print numbers 

的Python 3:

numbers = list(range(10, 0, -1)) 
print(numbers) 

输出

[10, 9, 8, 7, 6, 5, 4, 3, 2, 1] 
+1

直接在python3中使用'list'。 'numbers = list(range(10,0,-1))' –

+0

我在这里谈论Py3。 'list'是一个内建函数1.比Listcomp更小的代码并且更易于使用2.更具可读性。 3。快得多 –

+0

啊哈。现在看起来更好。谢谢。对于参考部分 - 您可以在系统上进行测试。 –

1

使用sortedreverse=True

sorted(numbers, reverse=True)

,或者尝试list.sort方法

number.sort(reverse=True)

但在你的情况简单的可以使用反向索引

number[: : -1]

+0

我正在寻找一个不使用默认功能的解决方案。 – Xcecution

+0

然后在你的情况下,你可以使用反向索引。我也在我的回答中显示。 –

1

如果你正在寻找有反向列表你可以这样做:

In [17]: [4,6,7][::-1] 
Out[17]: [7, 6, 4] 
+0

'range(1,11)[:: - 1]'在python2中,您无故创建2个列表。 – juanchopanza

+0

在Python3中使用'list(range(1,11)[:: - 1])''。 –

1
list(reversed([1,2])) 
>> [2,1] 
1

如果你想扭转你的降序排列,那么你可以使用列表的sort方法列表,您可以使用range功能,像

for i in range(n,0,-1): 
    print(number[i]) 

number.sort(reverse=True)