1、遍历一个集合,发现不符合条件的元素就把此元素移除出集合。以下是Java的实现:
import java.util.ArrayList;
class Main {
public static void main(String[] args) {
print_list();
}
public static void print_list(){
ArrayList<String> test_list = new ArrayList<>();
test_list.add("a");
test_list.add("b");
test_list.add("c");
test_list.add("d");
test_list.add("e");
test_list.add("f");
test_list.add("g");
test_list.add("h");
test_list.add("i");
test_list.add("j");
test_list.add("k");
test_list.add("l");
test_list.add("m");
test_list.add("n");
test_list.add("o");
test_list.add("p");
test_list.add("q");
for (int i = 0; i < test_list.size(); ++i) {
if ("c".equals(test_list.get(i))) {
System.out.println("find c, index=" + i);
test_list.remove(i);
System.out.println("test_list:" + test_list);
}
System.out.println(i + ":" + test_list.get(i));
}
}
}
执行结果:
![](https://img.haomeiwen.com/i4362697/37d56ca5fb043a3f.png)
那么Python中怎么实现呢?Python中的for循环是像for i in range(0, 10)这样的,
test_list = ['a', 'b', 'c', 'd', 'e', 'f']
for i in test_list:
print(i)
好像并不能获取到for循环中列表test_list的索引,其实可以使用enumerate函数来迭代for循环中列表的索引。如下:
test_list = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l',
'm', 'n','o', 'p', 'q']
for index, value in enumerate(test_list):
if test_list[index] == 'c':
print('find c, index=' + str(index))
del test_list[index]
print('test_list:' + str(test_list))
print('{index}:{value}'.format(index=index, value=test_list[index]))
执行结果:
![](https://img.haomeiwen.com/i4362697/40da6b310f1a6dac.png)
这样就实现了和上面Java一样的场景。不过这个value看起来就多余了,怎么去除这个多余的东西,我暂时还不知道,暂时还没找到一个函数是专门迭代列表的索引给for循环的。
2、Python中for循环字典,可以仅仅循环字典的索引,也可以仅仅循环字典的值,还可以循环字典的索引和值:
test_dict = {'name': 'pure', 'age': 18, 'area': 'guangzhou'}
# 迭代字典的索引
for k in test_dict.keys():
print(k)
# 迭代字典的值
for v in test_dict.values():
print(v)
# 迭代字典的索引和值
for k, v in test_dict.items():
print('{k}:{v}'.format(k=k, v=v))
执行结果:
![](https://img.haomeiwen.com/i4362697/bb1bdbd0e1226f6e.png)
网友评论