python-二維嵌套列表的元素刪除、更改大小寫

說明:

列表在循環過程中不可刪除元素,否則會使元素位置錯亂,超出索引

這裏採用從後向前刪除元素的方法,可避免位置錯亂

舉個例子:
1.將列表a的所有大寫字母改爲小寫
2.刪除所有數字

a = [[1,2,3],['a','b','c'],[4,5,6],['e','f','G'],[7,8,9]]
[['A', 'B', 'C'], ['E', 'F', 'g']]

代碼如下:

a = [[1,2,3],['a','b','c'],[4,5,6],['e','f','G'],[7,8,9]]
b = []  # 記錄零元素x位置座標
c = []  # 記錄零元素y位置座標
# 列表在循環過程中不可刪除元素,否則會使元素位置錯亂,超出索引
# 先更改大小寫字母,將所有數字改爲0,方便後續處理

for each1 in range(0,len(a)):
    for each2 in range(0,len(a[each1])):
        if 65 <= ord(str(a[each1][each2])) <= 90:
            #改爲大寫
            a[each1][each2] = chr(ord(str(a[each1][each2]))+32)
        elif 97 <= ord(str(a[each1][each2])) <= 122:
            # 改爲小寫
            a[each1][each2] = chr(ord(str(a[each1][each2]))-32)
        else:
            b.append(each1)
            c.append(each2)
# 刪掉所有0元素
# 將記錄好的位置座標倒敘排列
# 從後向前遍歷列表a,從後向前刪除元素,避免位置錯亂
b.reverse()
c.reverse()
for each in range(len(b)):
        del a[b[each]][c[each]]
        
# 刪掉所有空的子列表
# 相同原理,從後向前刪除
d = []
for each in range(len(a)):
    if len(a[each]) == 0:
        d.append(each)

d.reverse()
for each in d:
        del a[each]
print(a)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章