优草派  >   Python

python中不可迭代对象有哪些

黄佳欣            来源:优草派

在Python中,有些数据类型是可迭代的,也就是说它们可以被for循环遍历。但是,也有一些类型是不可迭代的,即不能被for循环遍历。那么,Python中不可迭代对象有哪些呢?本文将从多个角度分析这个问题。

1. 数字类型

python中不可迭代对象有哪些

Python中的数字类型(int、float、complex等)是不可迭代的。因为数字类型只是单个的值,而不是一个序列,所以它们不能被for循环遍历。例如:

```python

>>> for i in 123:

... print(i)

...

TypeError: 'int' object is not iterable

```

2. NoneType

NoneType是Python中表示空对象的类型,它也是不可迭代的。因为它本身只有一个值,即None,而不是一个序列。例如:

```python

>>> for i in None:

... print(i)

...

TypeError: 'NoneType' object is not iterable

```

3. 布尔类型

布尔类型(bool)也是不可迭代的。因为布尔类型只有两个值,即True和False,而不是一个序列。例如:

```python

>>> for i in True:

... print(i)

...

TypeError: 'bool' object is not iterable

```

4. 字符串类型

字符串类型(str)是可迭代的,但是字符串对象本身是不可迭代的。也就是说,对于一个字符串对象,我们不能直接使用for循环遍历它的每个字符。但是,我们可以使用字符串对象的内置方法(如split()、join()等)来对字符串进行操作。例如:

```python

>>> for i in 'hello':

... print(i)

...

h

e

l

l

o

>>> s = 'hello world'

>>> words = s.split()

>>> for w in words:

... print(w)

...

hello

world

>>> s = ' '.join(words)

>>> print(s)

hello world

```

5. 字典类型

字典类型(dict)是不可迭代的。因为字典对象本身只是一个映射,它没有顺序,所以不能被for循环遍历。但是,我们可以使用字典对象的内置方法(如keys()、values()、items()等)来遍历它的键、值或键值对。例如:

```python

>>> d = {'name': 'Alice', 'age': 18}

>>> for k in d.keys():

... print(k)

...

name

age

>>> for v in d.values():

... print(v)

...

Alice

18

>>> for k, v in d.items():

... print(k, v)

...

name Alice

age 18

```

6. 集合类型

集合类型(set)是可迭代的,但是集合对象本身是不可迭代的。也就是说,对于一个集合对象,我们不能直接使用for循环遍历它的每个元素。但是,我们可以使用集合对象的内置方法(如add()、remove()等)来操作它。例如:

```python

>>> for i in {1, 2, 3}:

... print(i)

...

1

2

3

>>> s = set()

>>> s.add(1)

>>> s.add(2)

>>> s.add(3)

>>> for i in s:

... print(i)

...

1

2

3

```

7. 自定义类型

对于自定义类型,它们是否可迭代取决于它们的实现。如果一个类实现了__iter__()方法,那么它就是可迭代的。例如:

```python

class MyList:

def __init__(self, lst):

self.lst = lst

def __iter__(self):

return iter(self.lst)

mylist = MyList([1, 2, 3])

for i in mylist:

print(i)

```

【原创声明】凡注明“来源:优草派”的文章,系本站原创,任何单位或个人未经本站书面授权不得转载、链接、转贴或以其他方式复制发表。否则,本站将依法追究其法律责任。
TOP 10
  • 周排行
  • 月排行