说明:
列表在循环过程中不可删除元素,否则会使元素位置错乱,超出索引
这里采用从后向前删除元素的方法,可避免位置错乱
举个例子:
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)