Why is my List adding to same array object again and again in update?

I’m trying to build an alternative system to tagging as my project will abuse it.

All GameObjects of interest have a common “tag” which are added to an array called ‘typeList’.

Then a List<> called ‘nameList’ looks through the array and adds those with a certain (name) which is equal to a public string.

The issue is the object added to the List seem to be looping, so it adds over and over again in update. What mistake am I making? or is there a much better way to do this?

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class AmountUI : MonoBehaviour
{


    public string compoundVarible;
    public List<Object> nameList; 
    public GameObject[] typeList;
                                 

    void Start()
    {

        List<Object> nameList = new List<Object>();
       
   
        if (gameObject.GetComponentInParent<UISystems>().Isotope > 0)
        {
            compoundVarible = gameObject.GetComponentInParent<UISystems>().Isotope +  gameObject.GetComponentInParent<UISystems>().Symbol;
        }
       else if (gameObject.GetComponentInParent<UISystems>().Isotope == 0)
        {
             compoundVarible = gameObject.GetComponentInParent<UISystems>().Symbol;
        }
        else
        {
            return;
        }
    }

   
    void Update()
    {
        this.GetComponent<Text>().text = number.ToString(); 

        typeList = (GameObject.FindGameObjectsWithTag("Element"));
       
            for (int i = 0; i < typeList.Length; i++) //for loop (Foreach?/ while)  
            {
                if (typeList*.name.Contains(compoundVarible))*

{
nameList.Add(typeList*);*
break;
}
else
{

return;
}
}
}
}

Thanks,
- as you can see I am fairly new to programming.

Not sure inside Update is the best place for this code this will run and update the typeList and add new objects every single frame. However, to answer the question to prevent the loop from adding multiple items:

using System.Linq;
...
if (nameList.Where(n => n == typeList*).FirstOrDefault() == null)*

nameList.Add(typeList*);*
else
// item already exists in nameList.