Hi there! 我是嘟嘟~受到前輩啟發,想說可以紀錄一下自己練習的過程,小女子為程式超超菜鳥,此系列非教學文,僅為個人解題筆記,可能有錯誤或未補充詳盡之處,歡迎前輩們不吝指教!也歡迎正在自學的夥伴一起討論學習~
第一行輸入一整數N代表陣列的數量。
第二行包含N個用空格隔開的整數數字,代表一陣列A。
限制:1 ≦ N ≦ 10001 ≦ A ≦ 10000
反轉陣列A裡的每個元素(in reverse),並以空格隔開後印出。
4
1 4 3 2
2 3 4 1
import math
import os
import random
import re
import sys
if __name__ == '__main__':
n = int(input())
arr = list(map(int, input().rstrip().split()))
n = int(input())
arr = list(map(int, input().rstrip().split()))
#對每個輸入字串刪除末尾空格,以空格隔開,轉換成整數型態再以列表儲存
for i in arr[::-1]: #將列表arr元素反轉,並歷遍每個元素
print(i,end = ' ') #印出每個元素,並用空格隔開
n = int(input())
arr = list(input().rstrip().split()) #與解答1差別在於列表內的元素(數字)仍為字串型態
print(' '.join(arr[::-1])) #反轉列表arr後,以空格隔開並印出新字串
輸入
35833 9919 6731
結果為
6731 9919 5833
str.rstrip() 可以删除字符串 末尾 的指定字符(默認為空格);
str.split() 可以把字符串以指定字符分隔(默認為空格),返回 列表(list);
map(function,seq) 可以將列表(seq)裡的每個元素用函式(function)歷遍計算,並返回一個 迭代器;
str.join(seq) 可以將列表(seq)中的字符串元素以指定字符串(str)分隔,返回一個新的 字串(string),注意的是若列表裡有非字符串元素(如整數int
),必須先轉換成字串str
型態才可以進行join(),否則會出現錯誤。
print(' '.join(str(arr[::-1])))
結果為
[ 2 , 3 , 4 , 1 ]
因為一但str(arr)後,arr的型態已經不是列表了,此時中括號([])和逗號(,)也轉換成字串,join()後會當成字串一起隔開並串接。
如果題目已經給定一個整數元素的列表了,規定要你改成字串後再用join()
串連的話,可以用兩種方法:
使用map()
函式
arr = list(map(str, arr))
列表生成式
arr = [str(c) for c in arr]
(感謝前輩補充)