he-029
1.000
Challenge · difficulty 1/5
# HumanEval/29
Implement a file **`solution.py`** that completes the function below. Keep the given name and signature; your file must define it at module level.
```python
from typing import List
def filter_by_prefix(strings: List[str], prefix: str) -> List[str]:
""" Filter an input list of strings only for ones that start with a given prefix.
>>> filter_by_prefix([], 'a')
[]
>>> filter_by_prefix(['abc', 'bcd', 'cde', 'array'], 'a')
['abc', 'array']
"""
```
<!-- imported from OpenAI HumanEval (HumanEval/29) -->
tests/test_he_029.py
# Auto-generated from OpenAI HumanEval HumanEval/29. Do not edit by hand.
from solution import * # noqa: F401,F403 (prompt helpers may be referenced by tests)
from solution import filter_by_prefix as candidate
METADATA = {
'author': 'jt',
'dataset': 'test'
}
def check(candidate):
assert candidate([], 'john') == []
assert candidate(['xxx', 'asd', 'xxy', 'john doe', 'xxxAAA', 'xxx'], 'xxx') == ['xxx', 'xxxAAA', 'xxx']
def test_he_029():
check(candidate)
System prompt
You are an expert programmer. Solve the task exactly as specified. Output your solution as fenced code blocks using the required file name(s) and the exact function/type signatures requested. Prefer correctness; do not include prose outside code unless asked.
Proposed solution
```python
from typing import List
def filter_by_prefix(strings: List[str], prefix: str) -> List[str]:
""" Filter an input list of strings only for ones that start with a given prefix.
>>> filter_by_prefix([], 'a')
[]
>>> filter_by_prefix(['abc', 'bcd', 'cde', 'array'], 'a')
['abc', 'array']
"""
return [s for s in strings if s.startswith(prefix)]
```Test output (stdout)
. [100%] 1 passed in 0.01s
Reasoning (chain-of-thought)
The task is to implement a function `filter_by_prefix` that filters a list of strings to only include those that start with a given prefix.
Looking at the examples:
- `filter_by_prefix([], 'a')` returns `[]` (empty list)
- `filter_by_prefix(['abc', 'bcd', 'cde', 'array'], 'a')` returns `['abc', 'array']` (strings starting with 'a')
This is straightforward - I need to iterate through the list and check if each string starts with the given prefix using the `str.startswith()` method.
Here's my implementation:
```python
from typing import List
def filter_by_prefix(strings: List[str], prefix: str) -> List[str]:
""" Filter an input list of strings only for ones that start with a given prefix.
>>> filter_by_prefix([], 'a')
[]
>>> filter_by_prefix(['abc', 'bcd', 'cde', 'array'], 'a')
['abc', 'array']
"""
return [s for s in strings if s.startswith(prefix)]
```
This is clean and efficient. It uses a list comprehension to filter strings that start with the given prefix.