print(dir(list))


some_list = [4, 6, 7, 3, 2, 10, 4]
print(some_list)
some_tuple = (4, 6, 7, 3, 2, 10, 4)
print(some_tuple)

print(some_list[3])
print(some_tuple[3])
print(some_list[2:5])
print(some_tuple[2:5])


for number in some_list:
    print(number)

for number in some_tuple:
    print(number)


some_tuple = 4, 6, 7, 3, 2, 10, 4
print(some_tuple)


some_list[2] = 100
print(some_list)

# some_tuple[2] = 100


some_dictionary = {"James": 10, "Mary": 20, "Kate": 15}
print(some_dictionary["James"])

one_more_dictionary = {(1, 2): "hello"}
print(one_more_dictionary)


some_set = {4, 6, 7, 6, 3, 4, 5, 4}
print(some_set)


a = []
print(type(a))

b = ()
print(type(b))

c = {}
print(type(c))

d = set()
print(type(d))


some_list = [4, 6, 7, 3, 2, 10, 4]
print(some_list)


new_list = [item * 2 for item in some_list]
print(new_list)


new_set = {item * 2 for item in some_list}
print(new_set)


names = ["James", "Mary", "Kate"]
numbers = [10, 20, 15]
some_dictionary = {key: value for key, value in zip(names, numbers)}
print(some_dictionary)


# Define an empty list
empty = []
print(empty)


vowels = "eauoi"
print(vowels)

# Sort in ascending order
a = sorted(vowels)
print(a)

# Sort in descending order
a = sorted(vowels, reverse=True)
print(a)

a = "".join(sorted(vowels, reverse=True))
print(a)

for vowel in sorted(vowels, reverse=True):
    print(vowel)


letters = "AaBbCcDd"

# Get all characters relying on default offsets
print(letters[::])
print(letters[:])

# Get every other character from 0 to the end
print(letters[::2])

# Get every other character from 1 to the end
print(letters[1::2])


letters = "ABCDEF"

print(letters[::-1])
print(letters[slice(None, None, -1)])

print(letters)


greeting = reversed("Hello, World!")
print(greeting)
print("".join(reversed("Hello, World!")))
print(next(greeting))

print(next(greeting))

print(next(greeting))


# Define a list of numbers
numbers = [1, 2, 3, 100]
print(numbers)


# Modify the list in place
numbers[3] = 200
print(numbers)


# Define a list of strings
superheroes = ["batman", "superman", "spiderman"]
print(superheroes)


# Define a list of objects with different data types
mixed_types = ["Hello World", [4, 5, 6], False]
print(mixed_types)


numbers = [1, 2, 3, 200]
print(numbers[0])
print(numbers[1])


superheroes = ["batman", "superman", "spiderman"]
print(superheroes[-1])
print(superheroes[-2])


numbers = [1, 2, 3, 200]
new_list = numbers[0:3]
print(new_list)


mixed_types = ["Hello World", [4, 5, 6], False]
print(mixed_types)
print(mixed_types[1][2])
print(mixed_types[0][6])


fruits = ["apples", "grapes", "oranges"]
veggies = ["corn", "kale", "mushrooms"]
print(fruits)
print(veggies)
grocery_list = fruits + veggies
print(grocery_list)


numbers = [1, 2, 3, 200]
print(numbers)
print((len(numbers)))


fruits = ["apples", "grapes", "oranges"]
fruits.append("blueberries")
print(fruits)


fruits.sort()
print(fruits)
fruits.clear()
print(fruits)

numbers_list = [1, 2, 3, 200]
numbers_list.pop(2)

numbers_list


# unpacks as follows
a, *b, c = [1, 2, 3, 4, 5]
print(a)
print(b)
print(c)


# registra cuántas veces se agregan valores equivalentes
import collections

mylist = [1, 2, 3, 1, 2, 2, 4, 6, 5, 7, 5, 9, 8, 9, 3]
print(collections.Counter(mylist).most_common(3))


tutorials = ["Python", "JavaScript", "Java", "C++", ["Django", "Flask"]]

# copy tutorials
all_tutorials = tutorials.copy()

# add new totorial
tutorials[4].append("React")

print("Tutorials:", tutorials)
print("All tutorails:", all_tutorials)


beverage = ["tea", "coke", "coffee", "red bull", "tea", "juice", "coke", "tea"]
tea_count = beverage.count("tea")
print(f"tea occurs {tea_count} times on beverage list")


languages = ["English", "Mandarin", "Hindi", "Spanish"]
# add new languages to the list
languages.extend(("French", "Arabic", "Bengali"))
print(languages)


languages = ["English", "Mandarin", "Hindi", "Spanish"]
# find the index value of Hindi
hindi_idx = languages.index("Hindi")
print("The index value of Hindi in languages is:", hindi_idx)


ages = [17, 18, 19, 17, 19, 20, 21, 20]
# find the index value of 20
age_idx = ages.index(20)
print("The index value of 20 in ages is:", age_idx)


ages = [17, 18, 19, 17, 19, 20, 21, 20]
# find the index value of 20
# age_idx = ages.index(30)
# print("The index value of 20 in ages is:",age_idx)


nombres_masculinos = ("Alvaro", "Miguel", "Edgardo", "David", "Miguel")
print(nombres_masculinos)
print(nombres_masculinos.index("Miguel"))
print(nombres_masculinos.index("Miguel", 2, 5))


print(5 in [1, 3, 5, 7])
print(20 in [1, 3, 5, 7])


lista = [1, 3, 5, 7]
print(lista)
a = 7
if a in lista:
    print("Si")
a = 2
if not a in lista:
    print("No")


languages = ["English", "Mandarin", "Spanish"]
# insert Hindi at index number 2
languages.insert(2, "Hindi")
print(languages)


languages = ["English", "Mandarin", "Spanish"]
# insert Hindi at index number 100
languages.insert(100, "Hindi")
print(languages)


languages = ["English", "Mandarin", "Hindi", "Spanish"]

# remove the last element
removed = languages.pop()
print("The removed item is:", removed)
print(languages)


languages = ["English", "Mandarin", "Hindi", "Spanish"]

# remove the item which index number is 2
removed = languages.pop(2)
print("The removed item is:", removed)
print(languages)


languages = ["English", "Mandarin", "Hindi", "Spanish"]
# remove the item which index number is 100
# removed = languages.pop(100)
# print("The removed item is:", removed)
# print(languages)


languages = ["English", "Mandarin", "Hindi", "Spanish"]
# remove the item Mandarin
languages.remove("Mandarin")
print(languages)


List = [2.3, 4.445, 3, 5.33, 1.054, 2.5]
del List[0]
print(List)


List = [2.3, 4.445, 3, 5.33, 1.054, 2.5]
List.remove(3)
print(List)

languages = ["English", "Spanish", "Mandarin", "Hindi", "Spanish"]
# remove the item Spanish
languages.remove("Spanish")
print(languages)


languages = ["English", "Spanish", "Mandarin", "Hindi", "Spanish"]
# remove the item French
# languages.remove("French")
# print(languages)


languages = ["English", "Mandarin", "Hindi", "Spanish"]
# reverse the list
languages.reverse()
print(languages)


languages = ["English", "Mandarin", "Hindi", "Spanish"]
# sort the list
languages.sort()
print(languages)


languages = ["English", "Mandarin", "Hindi", "Spanish", 3]
# sort the list
# languages.sort()
# print(languages)


List = [1, 2, 3, 4, 5]
print(sum(List))

List = [2.3, 4.445, 3, 5.33, 1.054, 2.5]
print(min(List))

List = [2.3, 4.445, 3, 5.33, 1.054, 2.5]
print(max(List))

List = [1, 2, 3, 1, 2, 1, 2, 3, 2, 1]
print(List.count(1))


List = [1, 2, 3, 1, 2, 1, 2, 3, 2, 1]
print(List.index(2))


List = [1, 2, 3, 1, 2, 1, 2, 3, 2, 1]
print(List.index(2, 2))


List = [2.3, 4.445, 3, 5.33, 1.054, 2.5]
# Reverse flag is set True
List.sort(reverse=True)
# List.sort().reverse(), reverses the sorted list
print(List)


List = [2.3, 4.445, 3, 5.33, 1.054, 2.5]
print(sorted(List))
print(List)


List = [1, 2, 3, 1, 2, 1, 2, 3, 2, 1]
"""index(element, start, end) : It will calculate till index end-1. """
# will check from index 2 to 5.
print("After checking in index range 2 to 5")
print(List.index(2, 2, 5))

# will check from index 2 to 3.
print("After checking in index range 2 to 3")
# print(List.index(2,2,3))


numbers = [3, 4, 7]
print(numbers)
more_numbers = [2, 1, *numbers, 11, 18]
print(more_numbers)


groups = [["Hong", "Ryan"], ["Anthony", "Wilhelmina"], ["Margaret", "Adrian"]]
print(groups)

names = []
for group in groups:
    for name in group:
        names.append(name)
print(names)


names = []
for group in groups:
    names.extend(group)
print(names)


names = sum(groups, start=[])
print(names)


names = (name for group in groups for name in group)
for name in names:
    print(name)


expected_output = ["Hong", "Ryan", "Anthony", "Wilhelmina", "Margaret", "Adrian"]
print(expected_output)


fruit_counts = {"apple": 3, "lime": 2, "watermelon": 1, "mandarin": 4}
print(fruit_counts)
print(fruit_counts.items())

flattened_counts = ["apple", 3, "lime", 2, "watermelon", 1, "mandarin", 4]
print(flattened_counts)


users = ["Jan", "Mike", "Marry", "Mike"]

print(list({user: user for user in users}))
