我说啊,这写代码嘛,啥都离不开“装东西”。你总得找个地方把你的数据啊、信息啊什么的搁一块儿,对吧?就像你出门买菜得有个篮子,做饭得有个碗,Python里干这活儿的,最基础、最常用、也最万能的,我跟你说,就是 列表(List)!
创建列表?听起来是不是挺高大上的?别被名字唬住了,这玩意儿简直就是新手村里送你的第一把趁手兵器,简单得不能再简单了。我刚学Python那会儿,第一次看到那对方括号 []
,脑袋里就嗡地一下——“哎哟,这啥?!” 后来一上手,得,真香!
最最基础,入门级别的 创建列表 方法,说白了就是用一对儿中括号 []
把你想放进去的东西给圈起来,中间用逗号 ,
隔开。就这么点事儿!比如,你想攒一堆数字,随手就来一个:
my_numbers = [1, 2, 3, 4, 5]
你看,多直观!my_numbers
这个名字,就是我给这个新出炉的 列表 起的名字,等号 =
右边 [1, 2, 3, 4, 5]
就是这个 列表 本人。里面装了五个元素:1、2、3、4、5。这些都是整数,没毛病。
那如果我想装点别的呢?字符串可不可以?当然可以!字符串、数字、布尔值(就是 True
或 False
那俩)、甚至别的 列表,统统都能往里扔!列表 这家伙,心可大了,来者不拒。
比如,我有个购物清单:
shopping_list = ["苹果", "牛奶", "面包", "鸡蛋"]
看见没?每个商品名字都是字符串,用双引号或单引号包起来,然后还是老规矩,中括号 框住,逗号隔开。这就是一个装字符串的 列表。
来个混合型的,更刺激:
mixed_bag = [10, "hello", True, 3.14, ["another", "list"]]
这个叫 mixed_bag
的 列表 里,有整数 10
,有字符串 "hello"
,有布尔值 True
,有浮点数 3.14
,甚至还嵌套了一个小 列表 ["another", "list"]
!这充分展现了 列表 的包容性,它不要求所有 元素 必须是同一种数据类型。这种灵活性,是很多其他编程语言里不常见到的,Python这方面简直是太体贴人了!
所以,第一种,也是最常用的 创建列表 方法,就是直接量身定制,用 []
字面量语法,把想装的元素一股脑儿丢进去。这是最快捷、最直观的办法,没有之一。
那有没有更“高级”一点的?或者说,在特定场合下更方便的?
有!有时候我不想一开始就往 列表 里塞东西,我就想先造一个空的“篮子”放那儿,等会儿再往里装。这时候怎么办?简单啊,来个空的 中括号 就行:
empty_list = []
瞧,empty_list
现在就是一个干干净净、啥也没有的 列表 了。就像你刚拿到一个空购物袋,等着往里放东西一样。等你想加东西了,可以用 append()
方法往末尾加,或者用 insert()
在指定位置插入,那是后话了,今天我们重点是创建。
除了直接用 []
字面量,Python还提供了一个内置的函数,叫 list()
。这个 list()
函数,本事可不小,它可以把其他一些可迭代(iterable)的对象,比如字符串、元组(tuple,长得像 列表 但用圆括号 ()
的家伙)、集合(set,用花括号 {}
的家伙)等等,转换成 列表。
比如说,我有一个字符串:
my_string = "Python"
我想把它拆成一个个字母组成的 列表,怎么办? list()
函数就派上用场了:
list_from_string = list(my_string)
结果会是 ['P', 'y', 't', 'h', 'o', 'n']
。看到了吧?字符串 "Python"
里的每一个字符,都变成了一个独立的元素,组成了新的 列表 list_from_string
。是不是挺神奇的?
再比如,我有个元组:
my_tuple = (10, 20, 30)
想把它变成 列表,也简单:
list_from_tuple = list(my_tuple)
现在 list_from_tuple
就是 [10, 20, 30]
了。
使用 list()
函数,特别是配合其他数据结构或者需要动态生成 列表 的时候,显得特别有用。它提供了一种标准化的转换方式。
还有一种创建 列表 的方法,非常Pythonic,叫做 列表推导式(List Comprehension)。这玩意儿写出来代码特简洁,虽然初看可能有点晕,但一旦习惯了,你会爱死它!它其实是一种快速生成 列表 的语法糖,通常用来根据已有的序列或其他可迭代对象来创建新的 列表,同时可能还会进行一些处理或者筛选。
列表推导式 的基本模样是这样的:
[expression for item in iterable]
或者带条件的:
[expression for item in iterable if condition]
举个例子,我想 创建 一个 列表,里面是1到10这几个数字的平方。不用循环怎么弄?用 列表推导式!
squares = [x**2 for x in range(1, 11)]
range(1, 11)
会生成一个从1到10的序列(注意不包含最后的11)。 for x in range(1, 11)
的意思就是,挨个儿把这个序列里的每个数字取出来,赋值给 x
。然后 x**2
表示对当前的 x
进行平方运算。最外层的 中括号 []
把这一切包起来,告诉Python:“嘿,把我算出来的这些结果,都攒成一个 列表!”
所以 squares
最后的结果就是 [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
。是不是感觉一行代码就搞定了好多事儿?比写个 for
循环、先创建空列表、再往里 append
要简洁多了!
再来个带条件的。比如,我只想取1到20之间的偶数,并且把它们翻个倍存到 列表 里:
even_doubled = [x * 2 for x in range(1, 21) if x % 2 == 0]
这里,for x in range(1, 21)
遍历1到20。if x % 2 == 0
是个条件,只保留那些能被2整除(也就是偶数)的 x
。然后 x * 2
是对筛选出来的偶数进行翻倍操作。最终的结果,even_doubled
就会是 [4, 8, 12, 16, 20, 24, 28, 32, 36, 40]
。
列表推导式 可谓是 创建列表 的一种强大且优雅的方式,尤其在处理序列数据时,能让你的代码看起来更简洁、更“内行”。不过对于初学者来说,如果觉得有点绕,先掌握好直接用 []
字面量和 list()
函数就完全够用了。慢慢来,这玩意儿急不来。
总而言之,python怎么创建列表?核心就是记住那对儿魔法般的中括号 []
。它可以空着,装个啥也没有的 列表;也可以直接在里面填上你想放的各种元素,用逗号隔开。再进一步,你可以用 list()
函数把其他能“迭代”的东西变成 列表。进阶一点,还有列表推导式这种紧凑的语法帮你快速生成符合条件的 列表。
在我看来, 列表 之所以如此重要,不光是因为它创建起来容易,更是因为它“能装”!它可以装各种各样的东西,而且它是一个“可变”(mutable)的数据类型,这意味着 列表创建 之后,你还可以往里加东西、删东西、改东西,甚至改变元素的顺序。这种灵活性,让 列表 几乎成了处理数据集、构建序列、实现队列或堆栈等数据结构时的首选工具。
所以,下次你再想在Python里“攒”一堆数据、信息或者其他任何东西的时候,第一时间就想到 列表,想到怎么用 中括号 []
创建 它!从最简单的 []
到里面塞满东西,再到 list()
的转换,最后是酷炫的列表推导式,每一种 创建列表 的方式都有它的用武之地。掌握了这些,你玩转Python的数据处理,那基础可就打牢了!快去你的Python环境里敲几行试试吧,亲自感受一下 创建列表 的简单与强大!
评论(0)