說明:
列表在循環過程中不可刪除元素,否則會使元素位置錯亂,超出索引
這裏採用從後向前刪除元素的方法,可避免位置錯亂
舉個例子:
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)