Add find snippets

This commit is contained in:
Angelos Chalaris
2020-03-10 22:38:48 +02:00
parent f4139e4d59
commit ea55491b9f
4 changed files with 68 additions and 0 deletions

17
snippets/find.md Normal file
View File

@ -0,0 +1,17 @@
---
title: find
tags: list,beginner
---
Returns the value of the first element in the provided list that satisfies the provided testing function.
Use list comprehension and `next()` to return the first element in `lst` for which `fn` returns `True`.
```py
def find(lst, fn):
return next(x for x in lst if fn(x))
```
```py
find([1, 2, 3, 4], lambda n: n % 2 == 1) # 1
```

17
snippets/find_index.md Normal file
View File

@ -0,0 +1,17 @@
---
title: find_index
tags: list,beginner
---
Returns the index of the first element in the provided list that satisfies the provided testing function.
Use list comprehension, `enumerate()` and `next()` to return the index of the first element in `lst` for which `fn` returns `True`.
```py
def find_index(lst, fn):
return next(i for i, x in enumerate(lst) if fn(x))
```
```py
find_index([1, 2, 3, 4], lambda n: n % 2 == 1) # 0
```

17
snippets/find_last.md Normal file
View File

@ -0,0 +1,17 @@
---
title: find_last
tags: list,beginner
---
Returns the value of the last element in the provided list that satisfies the provided testing function.
Use list comprehension and `next()` to return the last element in `lst` for which `fn` returns `True`.
```py
def find_last(lst, fn):
return next(x for x in lst[::-1] if fn(x))
```
```py
find_last([1, 2, 3, 4], lambda n: n % 2 == 1) # 3
```

View File

@ -0,0 +1,17 @@
---
title: find_last_index
tags: list,beginner
---
Returns the index of the last element in the provided list that satisfies the provided testing function.
Use list comprehension, `enumerate()` and `next()` to return the index of the last element in `lst` for which `fn` returns `True`.
```py
def find_last_index(lst, fn):
return len(lst) - 1 - next(i for i, x in enumerate(lst[::-1]) if fn(x))
```
```py
find_last_index([1, 2, 3, 4], lambda n: n % 2 == 1) # 2
```