How can I share a number with an opponent? Let's say I have a message (eg: Hello, world!) and I want to encrypt this message using symmetric encryption (AES-256). I am using a list of keys, where I randomly take one as a key (so that each message has a random key). My opponent also has this list of keys, but due to its size it will take too much time to brute-force. 

I would like to somehow share either the key, or the index number of the key in the key-list with my opponent, but I have to do it at the same time I am sending the message.

Is there an algorithm or protocol which I can use to handle this scenario?
Throw away the key lists and generate a fresh key every time you want to transmit a message. Use a key exchange algorithm like for example Diffie-Hellman.

If an enemy can steal your keys they are pretty much useless. You would have to notice the theft and replace all your keys with new ones. Asymmetric encryption like RSA won't help you here because as with symmetric keys the private key could be stolen. There's not much left you can do now, except for a key exchange algorithm. With that you create a new key every time you want to send a message to your friend. Beware that this won't help you against active attackers which can intercept and replace the communication between you two. It also needs direct responses from the other person to create a key, so you can't send him a new message when he's offline.