11

创建了一个列表flowers

>>> flowers = ['rose','bougainvillea','yucca','marigold','daylilly','lilly of the valley']

然后,

我必须指定列表thorny的子列表列表,该列表flowers由列表中的前三个对象组成。

这是我尝试过的:

>>> thorny = []
>>> thorny = flowers[1-3]
>>> thorny
'daylilly'
>>> thorny = flowers[0-2]
>>> thorny
'daylilly'
>>> flowers[0,1,2]
Traceback (most recent call last):
  File "<pyshell#76>", line 1, in <module>
    flowers[0,1,2]
TypeError: list indices must be integers, not tuple
>>> thorny = [flowers[0] + ' ,' + flowers[1] + ' ,' + flowers[2]]
>>> thorny
['rose ,bougainvillea ,yucca']

我怎样才能得到列表花的前 3 个对象,同时保持列表中列表的外观?

4

5 回答 5

16

切片符号[:3]不是[0-3]

In [1]: flowers = ['rose','bougainvillea','yucca','marigold','daylilly','lilly of the valley']

In [2]: thorny=flowers[:3]

In [3]: thorny
Out[3]: ['rose', 'bougainvillea', 'yucca']
于 2012-11-02T00:36:36.147 回答
8

在 Python 中:

thorny = flowers[1-3]

这等于flowers[-2]因为 (1 - 3 == -2),这意味着它从列表的末尾开始查找,即 - 从末尾开始的第二个元素 - 例如黄花菜...

要分割(但不包括)前 3 个元素,您可以使用thorny = flowers[:3],如果您想要这些之后的所有内容,那么它就是flowers[3:].

阅读 Python 切片

于 2012-11-02T00:39:04.890 回答
3

你会想做flowers[0:3](或等效地,flowers[:3])。如果您这样做flowers[0-3](例如),它将等同于flowers[-3](即 . 中倒数第三项flowers)。

于 2012-11-02T00:37:57.783 回答
2

任何给定列表都可以有 3 种可能的子列表类型:

e1  e2  e3  e4  e5  e6  e7  e8  e9  e10     << list elements
|<--FirstFew-->|        |<--LastFew-->|
        |<--MiddleElements-->|
  1. FirstFew主要由+ve索引表示。

    First 5 elements - [:5]      //Start index left out as the range excludes nothing.
    First 5 elements, exclude First 2 elements - [2:5]
    
  2. LastFew主要由-ve索引呈现。

    Last 5 elements - [-5:]       //End index left out as the range excludes nothing.
    Last 5 elements, exclude Last 2 elements - [-5:-2]
    
  3. MiddleElements可以通过正索引和负索引来表示。

    Above examples [2:5] and [-5:-2] covers this category.
    

只是列表花的前 3 个对象

[0 : 3]   //zero as there is nothing to exclude.
or
[:3]
于 2018-01-31T12:26:32.973 回答
1

干得好:

thorny = flowers[0:3]
于 2012-11-02T00:37:17.270 回答