簡體   English   中英

如何一一瀏覽一個python列表?

[英]How to go through a python list one by one?

我正在嘗試制作一種算法,可以在一組數字中找出哪個數字亂序。

有沒有辦法遍歷列表並查看列表中的每個項目加 1 是否會使列表中的下一個項目的值。 示例 ( 0 + 1 == 1) 和 ( 1 + 1 = 2) 但是當您到達 (2 + 1 != 4) 時,我將如何使其顯示 3。

number = [0,1,2,4,5]

if number[0] + 1 != number[1]:

IIUC:我建議使用內置的zip函數和從第二項開始的列表副本來獲取列表中的當前和下一項:

numbers = [0, 1, 2, 4, 5]

for c_number, n_number in zip(numbers, numbers[1:]):
    if c_number + 1 != n_number:
        print(c_number + 1)

或者甚至更好地使用itertools.pairwise (僅當您擁有 Python 3.10 或更高版本時,否則您可以查看上面鏈接中大致等效的內容以創建相同的功能):

import itertools

numbers = [0, 1, 2, 4, 5]

for c_number, n_number in itertools.pairwise(numbers):
    if c_number + 1 != n_number:
        print(c_number + 1)

當你想打印 3 時,我不能說我理解邏輯是什么。但無論如何這里是如何做到的,請相應地使用代碼:

a = [0,1,2,4,5]

for i in range(len(a)-1):
   if a[i] + 1 != a[i+1]:
      print(a[i]+1)

以下解決方案需要對列表進行排序。

my_list = [0,1,2,4,5,8,9]

for i in range(my_list[0], my_list[-1]):
    if i not in my_list:
        print(i)

您可以嘗試使用“for 循環”遍歷每個數字:

numbers = [0,1,2,4,5] #your numbers

for i in range(0, len(numbers)): #go through every number
    if numbers[i] + 1 != number[i+1]: #check if number is not in the line
        print(str(i)+"is false") #output

您可以將每個數字與其相對位置進行比較(從第一個值開始):

if any(i!=n for i,n in enumerate(a,a[0])):
   print("out of order")
else:
   print("proper sequence")

您還可以使用 zip 將每個項目與其后繼項目進行比較:

if any(m-n != 1 for n,m in zip(a,a[1:])):
   print("out of order")
else:
   print("proper sequence")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM