Change GameObject position based on position in list

I have a script that have a list and add to list GameObjects with tag “player”. Also the script is able to sort players in the list based on their score from high to low. What I’m trying to make is to change that GameObject position based on their position on the list. IE: player3 is in pos 0 in list so he will be positioned in 0,0,0 and player1 is in pos 1 in the list so he will be positioned in 0,-1,0.

Here is my script
public class HighscoreManager : MonoBehaviour
{
public List players = new List();
private int highscore;

void Start()
{        
    foreach (GameObject player in GameObject.FindGameObjectsWithTag("Player"))
    {
        players.Add(player);
    }
    highscore =GetComponent<Highscore>().playerscore;
}
void Update()
{
    if (players.Count > 0)
    {
        players.Sort(delegate (GameObject a, GameObject b)
        {
            return (a.GetComponent<Highscore>().playerscore).CompareTo(b.GetComponent<Highscore>                        ().playerscore);
        });
        players.Reverse();
    }
}

}

players.Sort((a, b) => a.GetComponent().playerscore.CompareTo(b.GetComponent().playerscore));
players.Reverse();

Then:

for (int i = 0; i < players.Count; i++) {
     players*.transform.position = new Vector3(0, -i, 0);* 

}
And a suggestion. Instead of doing this in update you would better do for loops when any players score is changed if it’s possible.

Try to use bubble sort and set position (x,or y or z) for each element +1