Python中的格雷碼是一種二進制編碼方式,其中相鄰兩個數的二進制位只有一個位不同。在計算機科學中應用廣泛,特別是在數字信號處理和數據通信中。
def gray_code(n): """ 格雷碼生成函數 :param n: 格雷碼位數 :return: 格雷碼列表 """ if n == 1: return ['0', '1'] else: res = [] old_gray_code = gray_code(n - 1) for i in range(len(old_gray_code)): res.append('0' + old_gray_code[i]) for i in range(len(old_gray_code) - 1, -1, -1): res.append('1' + old_gray_code[i]) return res
上述代碼是生成格雷碼的Python函數,其中輸入參數n表示格雷碼的位數,返回一個列表表示所有的格雷碼。格雷碼的生成過程可以簡單描述為:
- 當n=1時,返回['0','1']。
- 當n大于1時,將n-1的格雷碼列表賦值給old_gray_code。
- 將old_gray_code中的每個二進制數的前面添加一個0,然后添加到res列表中。
- 將old_gray_code中的每個二進制數從后往前遍歷,添加一個1,然后添加到res列表中。
- 返回res列表。
使用這個函數可以很方便的生成n位格雷碼。
>>>gray_code(3) ['000', '001', '011', '010', '110', '111', '101', '100'] >>>gray_code(4) ['0000', '0001', '0011', '0010', '0110', '0111', '0101', '0100', '1100', '1101', '1111', '1110', '1010', '1011', '1001', '1000']