for循环迭代列表的常用方法

  • Post author:
  • Post category:其他




for循环的应用

1.什么是for循环

for 循环又称为计数循环,是因为 for 循环次数由可迭代对象来决定,我们学过的字符串就是可迭代对象。

例如:列表、元组、字典、集合等都属于可迭代对象。现在大家可以用for循环来判断对象是否是可迭代的。

2.简单的写一个for循环

for循环可以把字符串里面的每个元素都依次取出来,自动赋值给变量 i, 然后再执行循环体内的代码块,for循环不需要考虑循环次数,循环次数由后面的对象长度来决定,我们简单来看一下

for i in 'python':
    print(i)
##输出如下:
##p
##y
##t
##h
##o
##n

2.for循环应用的列表

(1)删除重复的元素不保留一位重复的元素

li = [1,2,1,1,3,4,5,1]
for i in li:
    if i == 1:
        li.remove(i)
print(li)
## [2, 3, 4, 5, 1]

很显然这种方式是不对的,没有删除干净

a=[1,1,2,3,4,5,1,1]
b=a.copy()
for i in b:
    if i ==1:
        a.remove(i)
print(a)
##[2, 3, 4, 5]

这种方式就是复制了列表a,迭代了列表b然后b有的元素,a就删除重复的元素

a=[1,1,2,3,4,5,1,1]
for i in range(len(a)-1,-1,-1):
    if a[i] == 1:
        a.remove(a[i])
print(a)
##[2, 3, 4, 5]

这种方法是倒叙,这样就避免了因为删除了元素之后会继续迭代而列表却会向前推进一位的方法。

我们来看下这种,删除重复元素且保留一位重复的元素

a = [1,1,1,3,4,5,7,8,1,1]
b =[]
for i in a:
    if not i in b:
        b.append(i)
print(b)
##[1, 3, 4, 5, 7, 8]

这种方式我是最喜欢最常用的一种方法

(2)写一个函数实现将包含100个元素的列表随机分成12分

import random
li = [random.randint(1,100) for i in range(100)]
li1 = []
n = 8
for i in range(12):
    li1.append(li[i])
    li.remove(li[i])
li = ([li[i : i+n] for i in range(0,len(li),n)])
print(i)
li.append(li1)
print(li)
##[[40, 28, 55, 97, 29, 90, 41, 96], [88, 10, 34, 68, 55, 83, 15, 100], [28, 54, 27, 99, 74, 82, 70, 95], [27, 46, 24, 59, 70, 44, 55, 60], [85, 15, 40, 57, 44, 81, 68, 36], [73, 9, 97, 94, 45, 52, 100, 82], [17, 54, 52, 83, 65, 52, 33, 94], [7, 64, 27, 93, 55, 16, 23, 7], [39, 15, 7, 80, 23, 82, 75, 55], [86, 42, 61, 1, 81, 14, 96, 77], [82, 58, 43, 69, 55, 1, 60, 34], [73, 22, 33, 77, 16, 68, 96, 60, 58, 4, 51, 92]]

这里我运用了random模块,运用了列表推导表达式,分成的12个列表里面的元素都不会是重复的刚刚好



版权声明:本文为weixin_50679936原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。