['0011111', '0011101', '0011110', '0011110', '0011100', '0010111', '0011000', '0011011', '0011000', '0010001', '0010100', '0010111', '0010110', '0010010', '0001110', '0001110', '0001010', '0001111', '0000111', '0001001', '0000101', '0001000', '0000100', '1000001']
嗨新手,如何將串列中的第一個索引字串值“1”更改為“0000001”,例如“1000001”。感謝您的解決方案
uj5u.com熱心網友回復:
如果我理解正確,如果串列中字串的第一個字符是 ,請將其1更改為0:
lst = [
"0001000",
"0000100",
"1000001",
]
lst = [f"0{s[1:]}" if s.startswith("1") else s for s in lst]
print(lst)
印刷:
["0001000", "0000100", "0000001"]
編輯:使用str.replace:
lst = [s.replace("1", "0", 1) if s.startswith("1") else s for s in lst]
print(lst)
編輯2:如果您想先更改1為0(無論是否1在第一個位置找到,您都可以這樣做):
lst = [
"0001000",
"0000100",
"1000001",
]
lst = [s.replace("1", "0", 1) for s in lst]
print(lst)
印刷:
['0000000', '0000000', '0000001']
uj5u.com熱心網友回復:
考慮到所有這些字串都是07bit的二進制表示(最大值:127(0x7F,0b01111111)),您可以(對于每個元素):
將其轉換為以2 為底的(無符號)整數
位操作-清除MSB等價于63 ( 0x3F , 0b00111111 )
將結果整數轉換回(基數 2)字串
>>> # Original list >>> l7b = ["0011111", "0011101", "0011110", "0011110", "0011100", "0010111", "0011000", "0011011", "0011000", "0010001", "0010100", "0010111", "0010110", "0010010", "0001110", "0001110", "0001010", "0001111", "0000111", "0001001", "0000101", "0001000", "0000100", "1000001"] >>> l7b_msb_cleared = [f"{int(e, 2) & 0x3F:07b}" for e in l7b] >>> l7b_msb_cleared ['0011111', '0011101', '0011110', '0011110', '0011100', '0010111', '0011000', '0011011', '0011000', '0010001', '0010100', '0010111', '0010110', '0010010', '0001110', '0001110', '0001010', '0001111', '0000111', '0001001', '0000101', '0001000', '0000100', '0000001'] >>> >>> [e == l7b[i] for i, e in enumerate(l7b_msb_cleared)] [True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, False]
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/520240.html
標籤:Python细绳列表索引
上一篇:查找子字串串列的開始和結束索引
