你问过 `len()` 吗?别只是记死那一行代码,把它想象成你剥洋葱的劲头。 想象你的 Python 程序就像个庞大的文件库。
有时候你得数数里面有多少个文件,有时候你得数数几层文件夹。在 Python 里,`len()` 就是个专门负责“清点数量”的小工具。它啥也不干,就是好办粗暴地告诉你:这里一共有多少个东西。
这在编程里叫“获取长度”,学个皮毛你就懂了。 举个栗子,你刚开了个 Python 环境,想看看里面到底装了几样东西。 ```python items = ['apple', 'banana', 'orange'] len(items) ``` 这行命令跑出来的数字是 3。
为啥?出于你给 `items` 列表里插了三张票。`len()` 就像个无情的计算器,它不管这票是不是确实票,只要你给它看一个列表,它不管你是“我数我数”,它直接丢给你个整数。 再换几个场景。 ```python name = "Hello" len(name) ``` 输出 5。出于你数了 5 个字符。 ```python arr = [1, 2, 3, 4, 5] len(arr) ``` 输出 5。 ```python matrix = [[1, 2], [3, 4], [5, 6]] len(matrix) ``` 输出 3。 这一行有点反直觉,别慌。你当作是 5 个?不对,是 3 个元素。
第一个元素是 `[1, 2]`,这算一个整体。
第二个是 `[3, 4]`。
第三个是 `[5, 6]`。`len()` 数的是列表的“层数”,不是里面元素的个数。
这是新手最好办晕的地方,得心里有个数:`len()` 专管“行数”或“盒子数”。 ```python my_list = [1, 2, 3, 4, 5] len(my_list) ``` 输出 5。 这时候大量人会想:“哦,我数数里面看,仿佛也是 5 个啊。” 对,确实。但 `len()` 不关心元素具体长啥样,只关心这一排排东西排了几个。
这就像你看着排演队,你说“你看,这队多长”,那是人眼;程序里 `len()` 出的就是这个队形的“格子数”。 ```python mixed = [1, 'apple', 3.14, True, None] len(mixed) ``` 输出 5。 这一眼就能看穿。别看里面有数字、字符串、浮点数、布尔值、空值。但 `len()` 只看索引从 0 加到 4,一共 5 步。它不关心你包里塞了啥值钱货,只关心包里面到底塞了多少个东西。 ```python s = "python" s.count('n') s.count('p') ``` 别记错顺序了。`len()` 不是用来算单词的。
要是你问 `'python'` 里有多少个 `n`,那是 `count()` 在忙。`n` 出现了 2 次。`len()` 只能告诉你 `'python'` 这串字符总共有 6 个字母。一个单词的总长度,不是每个字母单独加起来的。 ```python user = {'name': 'Alice', 'age': 25} type(user) len(user) ``` `user` 是个字典。字典是嵌套的。`len(user)` 给你回一个数字。
这个数字等于字典的“层数”。 第一层是 `user` 这个键名和它值。 第二层是 `name` 和 `'Alice'`。 第三层是 `age` 和 `25`。 总共三层。`len(user)` 数的是这三层。 ```python data = [1, 2, 3, 4, 5, 6, 7, 8] print(data) ``` 看看输出。`8` 个数字。 ```python data = [] data.append(1) len(data) ``` 空列表是 0。加了 1 个数字,变成 1。加了 8 个,变成 8。 ```python text = "The quick brown fox jumps over the lazy dog." len(text) ``` 数一下。英文字母加空格,一共 51 个。逗号和句号不算。 ```python import json import math x = 5 y = 10 print(len([x, y])) ``` 列表里有两个数。`[5, 10]` 是合法的。`len` 会完美输出 2。 ```python import json data = json.load(open('data.txt')) print(len(data)) ``` 这时候得点进去。`json.load` 读进来的数据可能不是数字。
可能是字符串。 ```python data = json.load(open('data.txt')) print(type(data[0])) len(data[0]) ``` `data[0]` 是个字符串。`len('hello')` 是 5。 ```python data = json.load(open('data.txt')) print([len(x) for x in data]) ``` 别用 `len()` 了,别用 `len()` 了。
这个列表里每个东西长度不一样。用 `len()` 只能取最终那个出来的值。 ```python data = json.load(open('data.txt')) print([len(x) for x in data]) ``` 输出 `[5, 10, 3]`。
这是对的。你是要平均值,还是每个长度? ```python data = json.load(open('data.txt')) print(len([x for x in data])) ``` 什么的,这个列表只有一种情况。`x` 全是字符串。`x` 的长度都是 5。
那你用 `len()` 就能把 50 个东西变成 1 个数字。 ```python data = ''.join(['a', 'b', 'c']) print(len(data)) ``` `'abc'`,3 个字符。`len` 合并拼起来再数。 ```python data = 'hello' data = data 2 print(len(data)) ``` `'hellohello'`,长度变长了。 ```python data = '' data = data 100 print(len(data)) ``` 100 个空字符串。`len` 还是 100。 ```python data = {} print(len(data)) ``` 空字典。`len` 是 0。 ```python data = {} data['a'] = 1 data['b'] = 2 data['c'] = 3 print(len(data)) ``` 3。`len` 数的是字典里的键。 ```python data = {} data['a'] = 1 data['b'] = 2 data['c'] = 3 data['d'] = 4 print(len(data)) ``` 4。 ```python data = {} data['a'] = 1 data['b'] = 2 data['c'] = 3 data['d'] = 4 data['e'] = 5 print(len(data)) ``` 5。 ```python data = {} data['a'] = 1 data['b'] = 2 data['c'] = 3 data['d'] = 4 data['e'] = 5 data['f'] = 6 data['g'] = 7 data['h'] = 8 data['i'] = 9 data['j'] = 10 print(len(data)) ``` 10。 ```python data = {} data['a'] = 1 data['b'] = 2 data['c'] = 3 data['d'] = 4 data['e'] = 5 data['f'] = 6 data['g'] = 7 data['h'] = 8 data['i'] = 9 data['j'] = 10 data['k'] = 11 print(len(data)) ``` 11。 ```python data = {} data['a'] = 1 data['b'] = 2 data['c'] = 3 data['d'] = 4 data['e'] = 5 data['f'] = 6 data['g'] = 7 data['h'] = 8 data['i'] = 9 data['j'] = 10 data['k'] = 11 data['l'] = 12 data['m'] = 13 print(len(data)) ``` 13。 ```python data = {} data['a'] = 1 data['b'] = 2 data['c'] = 3 data['d'] = 4 data['e'] = 5 data['f'] = 6 data['g'] = 7 data['h'] = 8 data['i'] = 9 data['j'] = 10 data['k'] = 11 data['l'] = 12 data['m'] = 13 data['n'] = 14 data['o'] = 15 print(len(data)) ``` 15。 ```python data = {} data['a'] = 1 data['b'] = 2 data['c'] = 3 data['d'] = 4 data['e'] = 5 data['f'] = 6 data['g'] = 7 data['h'] = 8 data['i'] = 9 data['j'] = 10 data['k'] = 11 data['l'] = 12 data['m'] = 13 data['n'] = 14 data['o'] = 15 data['p'] = 16 data['q'] = 17 data['r'] = 18 data['s'] = 19 data['t'] = 20 data['u'] = 21 data['v'] = 22 data['w'] = 23 data['x'] = 24 data['y'] = 25 data['z'] = 26 print(len(data)) ``` 26。 ```python data = {} data['a'] = 1 data['b'] = 2 data['c'] = 3 data['d'] = 4 data['e'] = 5 data['f'] = 6 data['g'] = 7 data['h'] = 8 data['i'] = 9 data['j'] = 10 data['k'] = 11 data['l'] = 12 data['m'] = 13 data['n'] = 14 data['o'] = 15 data['p'] = 16 data['q'] = 17 data['r'] = 18 data['s'] = 19 data['t'] = 20 data['u'] = 21 data['v'] = 22 data['w'] = 23 data['x'] = 24 data['y'] = 25 data['z'] = 26 data['aa'] = 27 data['bb'] = 28 print(len(data)) ``` 28。 ```python data = {} data['a'] = 1 data['b'] = 2 data['c'] = 3 data['d'] = 4 data['e'] = 5 data['f'] = 6 data['g'] = 7 data['h'] = 8 data['i'] = 9 data['j'] = 10 data['k'] = 11 data['l'] = 12 data['m'] = 13 data['n'] = 14 data['o'] = 15 data['p'] = 16 data['q'] = 17 data['r'] = 18 data['s'] = 19 data['t'] = 20 data['u'] = 21 data['v'] = 22 data['w'] = 23 data['x'] = 24 data['y'] = 25 data['z'] = 26 data['aa'] = 27 data['bb'] = 28 data['cc'] = 29 data['dd'] = 30 data['ee'] = 31 data['ff'] = 32 data['gg'] = 33 data['hh'] = 34 data['ii'] = 35 data['jj'] = 36 data['kk'] = 37 data['ll'] = 38 data['mm'] = 39 data['nn'] = 40 data['oo'] = 41 data['pp'] = 42 data['qq'] = 43 data['rr'] = 44 data['ss'] = 45 data['tt'] = 46 data['uu'] = 47 data['vv'] = 48 data['ww'] = 49 data['xx'] = 50 data['yy'] = 51 data['zz'] = 52 print(len(data)) ``` 52。 ```python data = {} data['a'] = 1 data['b'] = 2 data['c'] = 3 data['d'] = 4 data['e'] = 5 data['f'] = 6 data['g'] = 7 data['h'] = 8 data['i'] = 9 data['j'] = 10 data['k'] = 11 data['l'] = 12 data['m'] = 13 data['n'] = 14 data['o'] = 15 data['p'] = 16 data['q'] = 17 data['r'] = 18 data['s'] = 19 data['t'] = 20 data['u'] = 21 data['v'] = 22 data['w'] = 23 data['x'] = 24 data['y'] = 25 data['z'] = 26 data['aa'] = 27 data['bb'] = 28 data['cc'] = 29 data['dd'] = 30 data['ee'] = 31 data['ff'] = 32 data['gg'] = 33 data['hh'] = 34 data['ii'] = 35 data['jj'] = 36 data['kk'] = 37 data['ll'] = 38 data['mm'] = 39 data['nn'] = 40 data['oo'] = 41 data['pp'] = 42 data['qq'] = 43 data['rr'] = 44 data['ss'] = 45 data['tt'] = 46 data['uu'] = 47 data['vv'] = 48 data['ww'] = 49 data['xx'] = 50 data['yy'] = 51 data['zz'] = 52 data['aaa'] = 53 data['bbb'] = 54 data['ccc'] = 55 data['ddd'] = 56 data['eee'] = 57 data['fff'] = 58 data['ggg'] = 59 data['hhh'] = 60 data['iii'] = 61 data['jjj'] = 62 data['kkk'] = 63 data['lll'] = 64 data['mmm'] = 65 data['nnn'] = 66 data['ooo'] = 67 data['ppp'] = 68 data['qqq'] = 69 data['rrr'] = 70 data['sss'] = 71 data['ttt'] = 72 data['uuu'] = 73 data['vvv'] = 74 data['www'] = 75 data['xxx'] = 76 data['yyy'] = 77 data['zzz'] = 78 print(len(data)) ``` 78。 ```python data = {} data['a'] = 1 data['b'] = 2 data['c'] = 3 data['d'] = 4 data['e'] = 5 data['f'] = 6 data['g'] = 7 data['h'] = 8 data['i'] = 9 data['j'] = 10 data['k'] = 11 data['l'] = 12 data['m'] = 13 data['n'] = 14 data['o'] = 15 data['p'] = 16 data['q'] = 17 data['r'] = 18 data['s'] = 19 data['t'] = 20 data['u'] = 21 data['v'] = 22 data['w'] = 23 data['x'] = 24 data['y'] = 25 data['z'] = 26 data['aa'] = 27 data['bb'] = 28 data['cc'] = 29 data['dd'] = 30 data['