Python 可迭代类型

Python 可迭代类型

在Python中的一个可迭代对象,可以没有、有一个或几个元素。一个可迭代对象能够根据用户的需要返回其元素。

由于这种能力,我们可以使用 Python for 循环来迭代一个可迭代对象。

在现实中,range() 方法是可迭代的,因为它的输出可以被迭代。

代码

# Python program to show that we can use a for loop to loop over an iterable object

# initializing a for loop
for item in range(5):
  print(item)

输出

0
1
2
3
4

Python中的字符串也是一个可迭代对象,因为我们可以用for循环来迭代它的元素。

代码

# Python program to show that string is an iterable object by looping over it

# Initializing a string object
string = 'Python'

# Looping over the string object
for item in string:
    print(item)

输出

P
y
t
h
o
n

迭代表包括列表、图元和字典,因为它们可以被循环使用。作为一个例子。

代码

# Python program to show that list, tuple, and dictionary are iterable objects by looping over them

# Initializing a list object
list_ = [1, 2, 3, 4, 5, 6]

print(f"Elements of the list {list_}: ")

# Looping over the list object
for item in list_:
    print(item)

# Initializing a tuple object
tuple_ = (1, 2, 3, 4, 5, 6)

print(f"Elements of the tuple {tuple_}: ")

# Looping over the tuple object
for item in tuple_:
    print(item)

# Initializing a dictionary object
dict_ = {'a': 1, 'b': 2, 'c': 3}

print(f"Elements of the dictionary {dict_}: ")

# Looping over the dictionary object
for key, value in dict_.items():
    print(key, value)

输出

Elements of the list [1, 2, 3, 4, 5, 6]: 
1
2
3
4
5
6
Elements of the tuple (1, 2, 3, 4, 5, 6): 
1
2
3
4
5
6
Elements of the dictionary {'a': 1, 'b': 2, 'c': 3}: 
a 1
b 2
c 3

一般的规则是,如果一个人可以在任何东西上循环,那么它就是可迭代的。

什么是迭代器

只有可迭代的东西才有可能被迭代。而进行迭代的组件被称为迭代器。

iter()方法从给定的可迭代对象中获得一个可迭代对象。作为一个例子。

代码

# Python program to show how iter() is used

# Creating a list object
list_ = [1, 2, 3, 4, 5, 6]

# Creating the iter object
list_iter = iter(list_)
print(list_iter)

# Checking the type of list_iter object
print("The type of iter_list object is: ", type(list_iter))

输出

<list_iterator object at 0x7f56952b54f0>
The type of iter_list object is:  <class 'list_iterator'>

一旦我们有了迭代器对象,我们就可以使用 next() 方法从迭代器中获取下一个项目。

代码

# Python program showing how to get the elements of the iterator object

# Creating a list object
list_ = [1, 2, 3, 4, 5, 6]

# Creating the iter object
list_iter = iter(list_)
print(list_iter)

# Using the next() function to get the elements of the iterator list_iter
e = next(list_iter)
print(e)

输出

<list_iterator object at 0x7f56952b5b50>
1

next()方法每次使用都会给出迭代器中的下一个项目。作为一个例子。

代码

# Python program to use multiple next() statements

# Creating a list object
list_ = [1, 2, 3, 4, 5, 6]

# Creating the iter object
list_iter = iter(list_)
print(list_iter)

# Using the next() function five times to get the elements of the iterator list_iter

for i in range(5):
  e = next(list_iter)
  print(e)

输出

<list_iterator object at 0x7f56951d6c40>
1
2
3
4
5

如果没有更多的元素,我们调用next()函数,我们会得到一个异常。

代码

# Python program to show that error is raised if we call the next() function more times than the number of elements

# Creating a list object
list_ = [1, 2, 3, 4, 5, 6]

# Creating the iter object
list_iter = iter(list_)
print(list_iter)

# Using the next() function seven times to get the elements of the iterator list_iter

for i in range(7):
  e = next(list_iter)
  print(e)

输出

<list_iterator object at 0x7f56952b7100>
1
2
3
4
5
6
---------------------------------------------------------------------------
StopIteration                             Traceback (most recent call last)
<ipython-input-14-4456e4ae5daa> in <module>
     11 
     12 for i in range(7):
---> 13   e = next(list_iter)
     14   print(e)
     15 

StopIteration: 

迭代器是一个状态操作符。它表示在我们从一个特定的迭代器中取出一个项目后,它就不再可用。

换句话说,在我们对给定的迭代器进行循环之后,它就变成了空的。如果我们对它进行进一步的迭代,它将什么也不返回。

因为一个迭代器可以被迭代,所以在 Python 中它也被认为是一个可迭代的对象。这是很令人困惑的。作为一个例子。

代码

# Python program to show that an iterator is also an iterable object

# Creating a list and an iterator
list_ = [1, 2, 3, 4, 5, 6]
iter_ = iter(list_)

# Looping over an iterator
for l in iter_:
    print(l)

输出

1
2
3
4
5
6

如果我们调用 iter() 方法并向它提供一个可迭代的数据,它将返回一个相同的迭代器。

因此,我们已经学到了不少关于Python中迭代器的东西。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程