Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中返回特定的列表项_Python_String_List - Fatal编程技术网

在Python中返回特定的列表项

在Python中返回特定的列表项,python,string,list,Python,String,List,我有一个列表,其中包含几个文本文件的名称,如下所示: ["catfile.txt", "order_2014_11_11_11", "santa.txt", "order_2013_10_20"] 我如何检查并返回列表中以“order\”或任何其他给定序列开头的这些元素 In [92]: L = ["catfile.txt", "order_2014_11_11_11", "santa.txt", "order_2013_10_20"] In [93]: answer = [] I

我有一个列表,其中包含几个文本文件的名称,如下所示:

["catfile.txt", "order_2014_11_11_11", "santa.txt", "order_2013_10_20"]    
我如何检查并返回列表中以“order\”或任何其他给定序列开头的这些元素

In [92]: L = ["catfile.txt", "order_2014_11_11_11", "santa.txt", "order_2013_10_20"]

In [93]: answer = []

In [94]: for elem in L:
   ....:     if elem.startswith("order_"):
   ....:         answer.append(elem)
   ....:         

In [95]: answer
Out[95]: ['order_2014_11_11_11', 'order_2013_10_20']
作为一项功能:

In [96]: def returnOrders(L):
   ....:     answer = []
   ....:     for elem in L:
   ....:         if elem.startswith("order_"):
   ....:             answer.append(elem)
   ....:     return answer
   ....: 

In [97]: L
Out[97]: ['catfile.txt', 'order_2014_11_11_11', 'santa.txt', 'order_2013_10_20']

In [98]: returnOrders(L)
Out[98]: ['order_2014_11_11_11', 'order_2013_10_20']
更一般地说:

In [99]: def returnStarters(L, prefix):
   ....:     answer = []
   ....:     for elem in L:
   ....:         if elem.startswith(prefix):
   ....:             answer.append(elem)
   ....:     return answer
   ....: 

In [100]: L
Out[100]: ['catfile.txt', 'order_2014_11_11_11', 'santa.txt', 'order_2013_10_20']

In [101]: returnStarters(L, "order_")
Out[101]: ['order_2014_11_11_11', 'order_2013_10_20']
作为一项功能:

In [96]: def returnOrders(L):
   ....:     answer = []
   ....:     for elem in L:
   ....:         if elem.startswith("order_"):
   ....:             answer.append(elem)
   ....:     return answer
   ....: 

In [97]: L
Out[97]: ['catfile.txt', 'order_2014_11_11_11', 'santa.txt', 'order_2013_10_20']

In [98]: returnOrders(L)
Out[98]: ['order_2014_11_11_11', 'order_2013_10_20']
更一般地说:

In [99]: def returnStarters(L, prefix):
   ....:     answer = []
   ....:     for elem in L:
   ....:         if elem.startswith(prefix):
   ....:             answer.append(elem)
   ....:     return answer
   ....: 

In [100]: L
Out[100]: ['catfile.txt', 'order_2014_11_11_11', 'santa.txt', 'order_2013_10_20']

In [101]: returnStarters(L, "order_")
Out[101]: ['order_2014_11_11_11', 'order_2013_10_20']
说明: 列表理解通常类似于:

[somefunction(x) for x in data if some_condition]
在我们的例子中,我们只想从数据中选择项,而不是操纵它们。因此,不需要
somefunction
,表达式简化为:

[x for x in data if some_condition]
在我们的例子中,条件是字符串以
顺序开始。Python有一个方便的字符串方法来测试这一点。很自然地,它被称为
startswith
。因此,最终形式是:

[ x for x in data if x.startswith('order_')]
如果需要,可以使用类似的string方法来测试字符串的结尾。例如:

>>> [ x for x in data if x.endswith('txt')]
['catfile.txt', 'santa.txt']
说明: 列表理解通常类似于:

[somefunction(x) for x in data if some_condition]
在我们的例子中,我们只想从数据中选择项,而不是操纵它们。因此,不需要
somefunction
,表达式简化为:

[x for x in data if some_condition]
在我们的例子中,条件是字符串以
顺序开始。Python有一个方便的字符串方法来测试这一点。很自然地,它被称为
startswith
。因此,最终形式是:

[ x for x in data if x.startswith('order_')]
如果需要,可以使用类似的string方法来测试字符串的结尾。例如:

>>> [ x for x in data if x.endswith('txt')]
['catfile.txt', 'santa.txt']
您可以使用以下选项来筛选列表:

您甚至可以使用
[:]
将此操作设置为就地操作:

>>> lst = ["catfile.txt", "order_2014_11_11_11", "santa.txt", "order_2013_10_20"]
>>> lst[:] = [x for x in lst if x.startswith('order_')]
>>> lst
['order_2014_11_11_11', 'order_2013_10_20']
>>>
最后,需要注意的是,
str.startswith
允许您指定要搜索的前缀元组:

>>> lst = ["catfile.txt", "order_2014_11_11_11", "santa.txt", "order_2013_10_20"]
>>> [x for x in lst if x.startswith(('order_', 'cat'))]
['catfile.txt', 'order_2014_11_11_11', 'order_2013_10_20']
>>>
您可以使用以下选项来筛选列表:

您甚至可以使用
[:]
将此操作设置为就地操作:

>>> lst = ["catfile.txt", "order_2014_11_11_11", "santa.txt", "order_2013_10_20"]
>>> lst[:] = [x for x in lst if x.startswith('order_')]
>>> lst
['order_2014_11_11_11', 'order_2013_10_20']
>>>
最后,需要注意的是,
str.startswith
允许您指定要搜索的前缀元组:

>>> lst = ["catfile.txt", "order_2014_11_11_11", "santa.txt", "order_2013_10_20"]
>>> [x for x in lst if x.startswith(('order_', 'cat'))]
['catfile.txt', 'order_2014_11_11_11', 'order_2013_10_20']
>>>
请尝试以下代码:

l1 = ["catfile.txt", "order_2014_11_11_11", "santa.txt", "order_2013_10_20"]
l2 = []

for i in l1:
    if i.startswith("order"):
        l2.append(i)
样本和输出

print l1
['catfile.txt', 'order_2014_11_11_11', 'santa.txt', 'order_2013_10_20']

print l2
['order_2014_11_11_11', 'order_2013_10_20']
请尝试以下代码:

l1 = ["catfile.txt", "order_2014_11_11_11", "santa.txt", "order_2013_10_20"]
l2 = []

for i in l1:
    if i.startswith("order"):
        l2.append(i)
样本和输出

print l1
['catfile.txt', 'order_2014_11_11_11', 'santa.txt', 'order_2013_10_20']

print l2
['order_2014_11_11_11', 'order_2013_10_20']

哦,哇,我犯了个愚蠢的错误,谢谢,修正了。我想知道为什么会出现反对票。提交时间几乎相同,但你最初的回答完全不同。您在
中使用了
,而不是
.startswith()
在原始答案中,该更新后来才出现。是的,我意识到我误读了问题,所以我修复了我的答案。有什么问题吗?噢,哇,我犯了个愚蠢的错误,谢谢,修正了。我想知道为什么会出现反对票。提交时间几乎相同,但你最初的回答完全不同。您在
中使用了
,而不是
.startswith()
在原始答案中,该更新后来才出现。是的,我意识到我误读了问题,所以我修复了我的答案。有什么问题吗?