<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 Python 3
Functions
Step1:  We can unpack a list or tuple into positional arguments using a star *
Step2:  Similarly, we can use double star ** to unpack a dictionary into keyword arguments.
Step3:  Comprehensions
With <a href="http
Step4:  Dictionary comprehension
<ASSISTANT_TASK:>
Python Code:
import math
def euclidean_distance(x1, y1, x2, y2):
    return math.sqrt((x1 - x2) ** 2 + (y1-y2) ** 2)
euclidean_distance(0,0,1,1)
Explanation: Python 3
Functions
End of explanation
values_list = [0,0,1,1]
euclidean_distance(*values_list)
values_tuple = (0,0,1,1)
euclidean_distance(*values_tuple)
Explanation: We can unpack a list or tuple into positional arguments using a star *:
End of explanation
values_dict = { 'x1': 0, 'y1': 0, 'x2': 1, 'y2': 1 }
euclidean_distance(**values_dict)
list(zip([1,2,3,4,5,6]))
Explanation: Similarly, we can use double star ** to unpack a dictionary into keyword arguments.
End of explanation
# List comprehension
[num ** 2 for num in range(-10, 11)]
[num ** 2 for num in range(-10, 11) if num > 0]
# Set comprehension
names = [ 'Bob', 'JOHN', 'alice', 'bob', 'ALICE', 'J', 'Bob' ]
{ name[0].upper() + name[1:].lower() for name in names if len(name) > 1 }
Explanation: Comprehensions
With <a href="http://python-3-patterns-idioms-test.readthedocs.io/en/latest/Comprehensions.html">comprehensions</a>, we can build a sequence based on another iterable.
End of explanation
s = "Action Is Eloquence"
counts = dict()
for char in s:
    counts[char] = counts.get(char, 0) + 1
counts
freq = { 
    k.lower() : counts.get(k.lower(), 0) + counts.get(k.upper(), 0)
    for k in counts.keys() if k.isalpha()
}
freq
Explanation: Dictionary comprehension
End of explanation
<END_TASK>