list.remove之未解之谜
zimu='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'shuzi='0123456789'
fu='~!@#$%^&*()_=-/,.?<>;:[]{}|\\'
A=input('请输入需要检查的密码组合:')
listA=[]
for i in A:#将字符串转化成列表,方便操作。
listA.append(i)
listB=listA[:]
for y in listB:#去除字母
if y in zimu:
listB.pop(listB.index(y))
for t in listB :#去除数字
if t in shuzi:
listB.remove(t)
run:
请输入需要检查的密码组合:xsax4545
>>> listB
['s', 'x', '5', '5']
>>>
========================== RESTART: D:/python/9.6测试.py =========================
请输入需要检查的密码组合:nxwed34r
5
>>> listB
['x', 'e', '4']
>>>
========================== RESTART: D:/python/9.6测试.py =========================
请输入需要检查的密码组合:saxwf3445
>>> listB
['a', 'w', '4', '5']
>>>
so他这个删除是按照什么来的
随机的吗???????、
用 for 循环遍历的时候最好不要删除元素
例如:
>>> a =
>>> for i in a:
if i % 2 == 0:
a.remove(i)
>>> print(a)
因为你遍历的时候把这个元素删除了,那么下一个元素就会顶上来,你遍历的下一个元素将会是原本下一个的后面那个。 你用for循环在原列表中remove的话
删除掉元素后会引起下标的变化
所以你用for循环遍历切片然后再remove就不会出错了
a = list(range(10))
for i in a[:]:
a.remove(i)
print(a)
盡量不要再循環遍歷裡面使用 remove() 或 pop() 函數,除非你有絕對自信不會弄錯(因為遍歷會直接影響索引位置,而 remove() 或 pop() 函數是針對索引位置做改變,所以你根本不知道 remove() 對應哪些位置) 逃兵 发表于 2021-9-6 13:46
你用for循环在原列表中remove的话
删除掉元素后会引起下标的变化
所以你用for循环遍历切片然后再remove就 ...
这波可以!!!
页:
[1]