史泰龙1997 发表于 2020-10-7 21:00:10

关于迭代获取索引的一个问题

# 替换strings中 aa 的字符串
strings = ['aa','bb','aa','cc']
string = ['aa']
for index,string in enumerate(strings):#这句是怎么执行的呢?是怎么进行运作的呀?index string 在起了什么作用?
    if 'aa' in string:
      strings = ''    #这里的index又是如何取值的呢?
      

kylin121380 发表于 2020-10-7 21:04:01

enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标
enumerate后得到的是[(0, 'aa'), (1, 'bb'), (2, 'cc'), (3, 'dd')],index依次为0,1,2,3,string依次为aa,bb,cc,dd

疾风怪盗 发表于 2020-10-7 21:04:50

enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中
>>>seq = ['one', 'two', 'three']
>>> for i, element in enumerate(seq):
...   print i, element
...
0 one
1 two
2 three
https://www.runoob.com/python/python-func-enumerate.html

昨非 发表于 2020-10-7 21:06:59

enumerate()方法遍历strings时,index 和string 分别是列表元素的索引值和值
举个例子:
>>> seasons = ['Spring', 'Summer', 'Fall', 'Winter']
>>> list(enumerate(seasons))
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]

昨非 发表于 2020-10-7 21:09:37

你的问题中,循环变量string就是enumerate()返回的元组,
if 'aa' in string,来判断该元组中是否是aa,以达到通过index替换元素的目的

史泰龙1997 发表于 2020-10-7 21:18:38

昨非 发表于 2020-10-7 21:09
你的问题中,循环变量string就是enumerate()返回的元组,
if 'aa' in string,来判断该元组中是否是aa,以 ...

第一次执行for后 会返回一个(0,aa)的元组,这时候index的值是0,string的值是aa,
然后if判断true 或 false。 是这样吧?
这个for的执行次数是根据enumerate返回的元组个数决定的吗?

史泰龙1997 发表于 2020-10-7 21:19:18

疾风怪盗 发表于 2020-10-7 21:04
enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数 ...

谢谢您的答复!

史泰龙1997 发表于 2020-10-7 21:19:49

kylin121380 发表于 2020-10-7 21:04
enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数 ...

谢谢您的答复!

昨非 发表于 2020-10-7 21:26:00

史泰龙1997 发表于 2020-10-7 21:18
第一次执行for后 会返回一个(0,aa)的元组,这时候index的值是0,string的值是aa,
然后if判断true 或 ...

if 的判断结果决定了是否执行下面的替换,for语句执行的次数就是enumerate返回元组的个数,原理类似单纯的for i in ..的语句

疾风怪盗 发表于 2020-10-7 21:44:34

史泰龙1997 发表于 2020-10-7 21:19
谢谢您的答复!

其实很好理解啊,字典items循环时不是也是这样的么?key,value
页: [1]
查看完整版本: 关于迭代获取索引的一个问题