सूचियों में परिवर्तन की सूची अप्रत्याशित रूप से उप-सूचियों में दिखाई देती है

मुझे पायथन में सूचियों की एक सूची बनाने की आवश्यकता थी, इसलिए मैंने निम्नलिखित टाइप किया:

my_list = [[1] * 4] * 3 

सूची इस तरह दिखती थी:

[[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]] 

फिर मैंने एक अंतरतम मान बदल दिया:

my_list[0][0] = 5 

अब मेरी सूची इस तरह दिखती है:

[[5, 1, 1, 1], [5, 1, 1, 1], [5, 1, 1, 1]]  

जो मैं चाहता था या उम्मीद नहीं थी। क्या कोई कृपया बता सकता है कि क्या हो रहा है, और इससे कैसे बचा जा सकता है?