首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python:如何将以某个字母开头的列表中的元素复制到新列表中,或者从列表中删除不以字母开头的元素

Python:如何将以某个字母开头的列表中的元素复制到新列表中,或者从列表中删除不以字母开头的元素
EN

Stack Overflow用户
提问于 2022-05-11 22:42:09
回答 5查看 62关注 0票数 2

我正在用熊猫从excel文件中得到一个列表。

代码语言:javascript
复制
start_path = r'C:\scratch\\'
File = 'test.xlsx'
import pandas as pd 
mylist = []
df = pd.read_excel(start_path + File, sheet_name='GIS')
mylist = df['Column A'].tolist()

列表:

代码语言:javascript
复制
mylist = ['LB-52/LP-7', 'LB-53/LI-5', 'LB-54/LP-8', 'LB-55', 'LB-56', 'ABC']

我的目标是从这个列表中创建一个新的列表,只使用以LB开头的元素。因此,新的清单将是:

代码语言:javascript
复制
newlist = ['LB-52/LP-7', 'LB-53/LI-5', 'LB-54/LP-8', 'LB-55', 'LB-56']

或者从列表中删除不以“LB”开头的所有元素(从而从列表中删除ABC )。

代码语言:javascript
复制
newlist = [str(x for x in mylist if "LB" in x)]

我试过了上面的话,这个就吐出来了:

代码语言:javascript
复制
['<generator object <genexpr> at 0x0000024B5B8F62C8>']

我还尝试了以下几点:

代码语言:javascript
复制
approved = ['LB']
mylist[:] = [str(x for x in mylist if any(sub in x for sub in approved))]

这将获得与前面相同的生成器对象消息。

我觉得这很简单,但我想不出来。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2022-05-11 22:46:03

您可以在列表理解中使用str.startswith

代码语言:javascript
复制
mylist = ["LB-52/LP-7", "LB-53/LI-5", "LB-54/LP-8", "LB-55", "LB-56", "ABC"]

newlist = [value for value in mylist if value.startswith("LB")]
print(newlist)

指纹:

代码语言:javascript
复制
['LB-52/LP-7', 'LB-53/LI-5', 'LB-54/LP-8', 'LB-55', 'LB-56']

您可以在str()中删除newlist = [str(x for x in mylist if "LB" in x)],但这会留下xxxLBxxx (LB在字符串中)等值。

票数 2
EN

Stack Overflow用户

发布于 2022-05-11 22:48:12

代码语言:javascript
复制
newlist = [x for x in mylist if x[0:2]=="LB"]

您还可以使用切片,也可以使用切片检查所需的索引。

票数 1
EN

Stack Overflow用户

发布于 2022-05-11 22:52:45

一般来说,熊猫比蟒蛇做同样的工作要快。因此,在“移到”到python之前,您应该尝试在熊猫中完成大部分的计算或过滤。

代码语言:javascript
复制
mylist = df.loc[df['Column A'].str.startswith("LB"), 'Column A'].tolist()
mylist
>>> ['LB-52/LP-7', 'LB-53/LI-5', 'LB-54/LP-8', 'LB-55', 'LB-56']
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72208351

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档