是否有一個簡單的方法來通過列表? 可以說,我想訪問不知道它是A B米蘭達通過列表
["A","A","A","A","B","A","A","A","A"]
名單5日的數據是有辦法,我能做到這一點,而無需通過列表進行排序?
是否有一個簡單的方法來通過列表? 可以說,我想訪問不知道它是A B米蘭達通過列表
["A","A","A","A","B","A","A","A","A"]
名單5日的數據是有辦法,我能做到這一點,而無需通過列表進行排序?
我不知道米蘭達那麼好,但我預計功能skip
和take
可用。
你可以通過跳過和取出函數來解決第五個元素。當跳過和取消不可用時,自己創建它們很容易。
跳過:跳過列表中元素的y數,當y大於列表中的項目的數量越多,它會返回一個空列表
看法:發生在一個元素的第一y個列表中,當y大於列表中的項目數時,將返回完整列表。
skip y [] = []
skip 0 xs = xs
skip y (x:xs) = skip xs (y-1)
take y [] = []
take 0 xs = []
take y (x:xs) = x : take (y-1) xs
elementAt x xs = take 1 (skip x xs)
列表是感應數據類型。這意味着通過列表定義的函數 - 例如訪問元素 - 由遞歸定義。您正在查找的數據結構似乎是一個數組,它允許進行恆定的時間查找。查找列表中索引元素的最簡單方法是直接:
lookup :: Int -> [a] -> Maybe [a]
lookup n [] = Nothing
lookup 0 (x:xs) = Just x
lookup n (x:xs) = lookup (n - 1) xs
另一種方法可以使用!運營商。比方說,你有在列表中定義的數據,如程序:
plist = [A,A,A,A,B,A,A,A,A]
然後執行plist!4
會給你的列表的第5個元素。 (如果包含0,1,2,3,4,則4爲第五單元)
因此plist!4
返回B.