2015-09-05 47 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)