python整數和列表 列表和整數Python

2021-10-19 03:15:40 字數 1749 閱讀 7835

假設實際縮排如下:specialnum = 10

def number_move(move_number):

for elements in range(len(move_number)):

if ( specialnum != move_number[-1]):

x = move_number.index(specialnum)

y = move_number.index(specialnum)+1

move_number[y], move_number[x] = move_number[x], move_number[y]

return move_number

…問題是你在迴圈中將10反覆交換到右邊,直到它到達最後。在

如果這不是您想要的,為什麼您首先要使用for elements in range(len(move_number))?把它拿出來,只會換一次。在

另外,您很少需要range(len(eggs));您可以只做for egg in eggs(或者,如果您需要索引和實際物件,for index, egg in enumerate(eggs))。在

另外,還有很多不需要的額外括號,這使得**更難閱讀。在

同時,每次呼叫index都必須搜尋整個列表以找到物件的位置;如果您已經知道物件的位置,則最好直接使用它。如果列表中有兩個元素的值相同,index只能找到第乙個元素,它不僅速度快,而且更簡單,而且更健壯。在您的例子中,沒有明顯的方法可以使用index,但至少可以避免呼叫它兩次。在

綜合起來:

^$最後,我說了使用index沒有明顯的方法,但是有沒有不明顯的方法?當然。如果要在同乙個物件上重複呼叫index,我們可以將最後找到的索引作為函式介面的一部分,甚至可以在函式內部儲存乙個快取。最簡單的方法就是把整個東西變成發電機。乙個改變引數的生成器可能有點混亂,所以讓它返回副本。最後,為了使其可定製,讓我們取乙個引數,以便您可以指定乙個不同於10的specialnum。在specialnum = 10

def number_move(move_number, special_num=specialnum):

for x, element in reversed(list(enumerate(move_number))):

if element == special_num:

while x+1 < len(move_number):

move_number = (move_number[:x] +

[move_number[x+1], move_number[x]] +

move_number[x+2:])

yield move_number

x += 1

現在,它會一步一步地把10年中所有的都移到最後。像這樣:>>> n = [1, 10, 2, 3, 10, 4, 5, 6]

>>> for x in number_move(n):

... print(x)

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

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

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

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

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

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

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

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

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

python中的列表,列表的特性

列表中可以存放任意型別的資料 li 1,2,3,5,6,8 li 1,2,3,1,2,3,4 5,7 eg 將0 9這10個數字隨機列表 注 shuffle 方法將序列的所有元素隨機排序。print service 1 列表的反轉 print service 1 除了第乙個之外的其他元素 print...

python 列表裡的列表 列表的扁平化

目標 列表含有子列表展開成乙個列表,列表的扁平化 如 智利 葡萄牙 德國 轉換為 智利 葡萄牙 德國 實現 k1 智利 葡萄牙 德國 k2 sum k1,print k2 元素都為列表 lista a b c d 展開成lista1 a b c d 命令 lista1 sum lista,因為sum...

Python入門之列表 列表的常規操作2

下面介紹列表的查詢 遍歷 判定 排序 亂序及反轉操作,列表的其他常規操作如增加刪除元素等詳見我的上篇部落格。8 查詢操作 8.1 獲取某個元素 name index 通過索引獲取 list1 1,3,5,8 print list1 1 查詢最後乙個元素,結果為8 8.2 獲取元素的索引 name.i...