首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

排除以特定字符开头的列表元素的最pythonic方法是什么?

首先,要排除以特定字符开头的列表元素,可以采用列表推导式(list comprehension)的方式,使用 filter() 函数过滤出开头不符合要求的元素,然后使用 remove() 函数从原始列表中删除这些元素。具体实现如下:

代码语言:python
代码运行次数:0
复制
original_list = ['apple', 'banana', 'cherry', 'orange', 'grape', 'kiwi', 'lemon']
filtered_list = list(filter(lambda x: x[0] != 'a', original_list))
result = [x for x in filtered_list if x != '']
print(result)

上述代码中,filter() 函数接收一个函数(lambda 表达式)作为参数,该函数检查输入的元素(x)是否满足条件(开头不符合要求)。如果满足条件,则返回一个生成器(generator)对象,否则返回 Nonelist() 函数将生成器对象转换为列表。最后,使用列表推导式(list comprehension)从过滤后的列表中删除所有空元素,并将结果存储在 result 变量中。

需要注意的是,这种方法仅适用于开头不符合要求的元素较少的情况。如果开头不符合要求的元素较多,则考虑使用其他方法进行筛选。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

python:删除列表特定元素几种方法

,更重要是学习到了几种删除列表元素方法,值得做一下笔记 解题思路 先说下我思路:题目要求给一个字符串s,s仅包含字母和空格字符,要求返回最后一个单词长度,考虑如下几点 如果s是空字符,即s...,这个列表只由连续字母和空字符组成,然后把列表所有空字符删除,最后把列表最后一项长度返回即可; 所以现在问题就转化为:如何删除一个列表特定元素,这里的话,就是删除列表字符,即..."" 解决方法 方法1: 借助一个临时列表,把非空元素提取到临时列表中,然后取出临时列表最后一项,返回其长度即可 这是最笨方法,实际运行时也是耗时方法 class Solution(object...都指向同一个列表,本质还是一个),新列表元素与原列表完全相同 然后遍历新列表,当遇到某个元素值为1时,就在原列表中把这个元素删掉(使用列表remove方法删除),因为remove在删除元素时,...> import copy >>> new_temp = copy.copy(temp) 关于原地删除列表特定元素方法,参考了如下文章: https://www.jb51.net/article

8.3K30

代码又被喷?8招让你代码更Pythonic

生成器,只有在使用时才会动态生成,而且只能使用1次,比如range(1000000),Python2中会在内存中生成1百万个元素列表,而在Python3不会生成列表,而是生成器,占用很小内存。...字符串拼接 Pythonic写法 普通写法 每次+操作都会产生新字符串,造成内存浪费,而join,整个过程中只会产生一个字符串对象 文件打开与关闭 Pythonic写法 普通写法 使用with,...Python将自动管理文件流打开与关闭,无需手动操作 列表操作 Pythonic写法 普通写法 list也可以用pop(0)来删除第一个元素,但是list在内存中是顺序存储,删除第一个元素,会导致之后所有元素都会前移...开头如果有大量删除和插入操作,避免使用list 解构赋值 Pythonic写法 字典也类似,在Python2中,字典items方法将返回列表,当字典比较大时,这样会很耗内存。...而iteritems方法返回是生成器。 Python3中,没有iteritems,items等价于Python2iteritems。

89660
  • pythonic风格代码有什么好处?附12个代码实例

    pythonic是开发者们在写python代码过程中总结编程习惯,崇尚优雅、明确、简单。就好比中文笔画,有先后顺序,符合文字书写习惯。...pythonic方法 a = [1,2,3,4,5,6,7,8,9,10] result = [x**2 for x in a if x%2==0] 「2、用生成器表达式来代替数据量较大列表推导」...# 任务:打印列表中每个元素索引 # 非pythonic方法 a = ['apple','banana','orange'] for i in range(len(a)): print(a[...# 任务:对比两个列表相同索引位置元素大小,输出较大值 # 非pythonic方法 a = [1,5,7] b = [2,4,6] for i in range(len(a)): if a[...b = 'world' a, b = b, a print(a, b) 「10、使用join方法拼接字符串」 # 非pythonic方法 a = ['w','o','r','l','d'] b =

    55710

    【Python环境】Python面试题汇总(一)

    【题目:002】| 说说你对pythonic看法,尝试解决下面的小问题 #简洁,明了,严谨,灵活 #交换两个变量值 a,b = b,a #去掉list中重复元素 old_list...= [1,1,1,3,4] new_list = list(set(old_list)) #翻转一个字符串 s = 'abcde' ss = s[::-1] #用两个元素之间有对应关系...建议在连接字符时候使用字符串本身方法 join(list),这个方法能提高效率,原因是它只是申请了一次内存空间, 因为它可以遍历list中元素计算出总共需要申请内存空间大小,一次申请完。...12.0 >>> str(98) # 将其他类型转为字符串型 '98' >>> list('abcd') # 将其他类型转为列表类型...深拷贝deepcopy(D)方法 【 题目:023】 | Python中pass语句作用是什么 pass语句什么也不做,一般作为占位符或者创建占位程序 【 题目:024】 | 写一段程序逐行读入一个文本文件

    1.2K70

    Python合并两个字典成一个新字典几种方法比较

    注意,先添加是d1,以保证后面添加d2重复键会覆盖d1。此方法满足了我们要求,而且清晰明确,可是三行代码总感觉不够Pythonic。...看上去很cool,但是不通用,字典键必须是字符串才可以用这种关键字参数方法。...6.元素拼接我们从每个字典中获取一个元素列表,将列表拼接起来,然后再用拼接列表构造字典:>>> d = dict(list(d1.items()) + list(d2.items()))>>> d =...如果在Python2中,items()方法本身返回就是列表,无需用list()转成列表元素拼接在构造字典可以满足要求,只是看上去代码有些重复。...8.chain items目前为止,我们讨论解决方案中,符合Python语言习惯而且只有一行代码实现,是创建两个items列表,然后拼接成字典。

    59220

    用这10个小技巧加速Python编程

    编码很有趣,而Python编码更有趣,因为有很多不同方法可以实现相同功能。但是,大多数时候都有一些首选实现方法,有些人将其称为Pythonic。...{'zero': 0, 'one': 1} has elements. () doesn't have elements. 3.使用Split()创建字符列表 我们经常使用字符串作为特定对象标识符...但是,我们必须编写成对引号将每个字符串括起来,这对于“懒惰”的人来说有点繁琐。因此,我更喜欢利用字符split()方法来创建字符列表,如下面的代码片段所示。...8.使用计数器进行元素计数 当我们在列表、元组或字符串中有多个项目时(例如,多个字符),我们经常想计算每项中有多少个元素。为此,可以为此功能编写一些乏味代码。...我们只需要指定一个整数(N),即可从列表中找出频繁N个项目。附带说明,该对象还将与其他序列数据一起使用,例如字符串和元组。

    94920

    手把手教你学会Python函数式编程

    这时在变量内部值意义上,你改变了A状态。 在函数式范式中,你不用告诉计算机做什么而是告诉他这个东西是什么。比如数字最大公约数是什么,从1到n乘积是什么等等。 因此,变量不能变化。...Map 为了理解,我们先来看看迭代是什么。通常可以迭代对象是列表或数组,但Python有许多不同类型可以迭代。你甚至可以创建自己对象,这些对象可以通过实现魔术方法进行迭代。...魔术方法就像是一个API,可以帮助你对象变得更加Pythonic。...函数式编程不是pythonic 您可能已经注意到了,我们想要在函数式编程中做很多事情都围绕着列表。除了reduce函数和闭包之外,您看到所有函数都会生成列表。...set是一个元素列表,在该列表中没有元素重复两次。 set中元素没有顺序。 您可能会注意到set(集合)与dict(字典)具有相同花括号。 Python非常聪明。

    1.1K21

    对比几段代码,看看你是 Python 菜鸟还是老鸟(另有福利)

    4、拼接字符串,普通写法: letters = ['h', 'e', 'l', 'l', 'o'] s = '' for l in letters: s += l print(s) pythonic..., elem) 遍历字典项: for key, value in dct.items(): print(key, value) 6、取出列表中大于 0 元素,生成新列表。...于是你不得不增加更多判断。 pythonic 写法: value = dct.get(key, 0) 改用 get 方法,不存在时会得到 None,或者指定默认值(这里是 0)。...以及看一些优质教程和经验分享,比如 Crossin编程教室 ? 多搜。当你实现一个小功能后,去网上搜一下,别人是怎么写,对比下是不是比你自己更好。举个例子:如何从列表中删除重复元素。...最后,留2个小作业,也是我标题上提到“福利”: 判断一个列表 A 是否为另一个列表 B “子集”,也就是列表 A 中元素是否都在列表 B 中。 计算 1 加到 100 和。

    71640

    来看几段代码,测测你是 Python 菜鸟还是老鸟

    4、拼接字符串,普通写法: letters = ['h', 'e', 'l', 'l', 'o'] s = '' for l in letters: s += l print(s) pythonic..., elem) 遍历字典项: for key, value in dct.items(): print(key, value) 6、取出列表中大于 0 元素,生成新列表。...于是你不得不增加更多判断。 pythonic 写法: value = dct.get(key, 0) 改用 get 方法,不存在时会得到 None,或者指定默认值(这里是 0)。...以及看一些优质教程和经验分享,比如 Crossin编程教室 多搜。当你实现一个小功能后,去网上搜一下,别人是怎么写,对比下是不是比你自己更好。举个例子:如何从列表中删除重复元素。...最后,留2个小作业: 判断一个列表 A 是否为另一个列表 B “子集”,也就是列表 A 中元素是否都在列表 B 中。 计算 1 加到 100 和。

    55350

    几段代码,测测你是 Python 菜鸟还是老鸟

    比如来实现对一个列表元素遍历访问,我见过很多次有人这么写: for i in range(len(lst)): print(lst[i]) 这样同学很可能是之前有过 C/C++ 或 Java...4、拼接字符串,普通写法: letters = ['h', 'e', 'l', 'l', 'o']s = ''for l in letters: s += lprint(s) pythonic 写法...) 遍历字典项: for key, value in dct.items(): print(key, value) 6、取出列表中大于 0 元素,生成新列表。...于是你不得不增加更多判断。 pythonic 写法: value = dct.get(key, 0) 改用 get 方法,不存在时会得到 None,或者指定默认值(这里是 0)。...当你实现一个小功能后,去网上搜一下,别人是怎么写,对比下是不是比你自己更好。举个例子:如何从列表中删除重复元素

    72780

    Python 版 LeetCode 刷题笔记 #14 最长公共前缀

    思路 先说我直观思路,先找出列表(即字符串数组)中最短字符串,接下来遍历整个列表,根据该最短字符串逐位、每次提取所有元素首位字符进行拼接,若提取出字符出现空字符或其它字符,说明公共前缀获取完毕...执行用时 : 44 ms, 在所有 Python3 提交中击败了 50.62% 用户 内存消耗 :13.8 MB, 在所有 Python3 提交中击败了 6.15% 用户 优化 上面我写代码中,通过列表推倒式获取所有元素特定第...i 位字符,通过生成结果列表长度与原列表是否相同来判断是否出现空字符;通过将所有字符列表转化为集合,检查集合中是否只有一个元素(一个元素说明所有字符相同)来判断是否出现其它字符。...,直接通过 zip 直接对列表打包: zip() 函数用于将可迭代对象作为参数,将对象中对应元素打包成一个个元组,然后返回由这些元组组成列表。...] 因为字符串也是可迭代对象,所以这里就通过 *strs 这种列表前加星号(作用是将列表解开,每个元素作为独立参数)来对所有字符串进行打包。

    83530

    快速排序算法介绍

    基本快速排序选取第一个元素作为主元。这样在数组已经有序情况下,每次划分将得到最坏结果。一种比较常见优化方法是随机化算法,即随机选取一个元素作为主元。...通常来说,选择这个数据方法是取开头、结尾、中间3个数据,通过比较选出其中中值。...外部快(External Quicksort):与普通快不同是,关键数据是一段buffer,首先将之前和之后M/2个元素读入buffer并对该buffer中这些元素进行排序,然后从被排序数组开头...(或者结尾)读入下一个元素,假如这个元素小于buffer中最小元素,把它写到开头空位上;假如这个元素大于buffer中最大元素,则写到最后空位上;否则把buffer中最大或者最小元素写入数组...)和快特点,是字符串排序中比较高效算法。

    70810

    【从0到1学算法】快速排序

    容易处理情况是,一条边长度是另一条整数倍。 比如下图,一边是50m,另一边是25m,那么最大方块为25mx25m。 ? 接下来是缩小问题规模,首先找出这块地可容纳最大方块。 ?...(简单条件) 缩小规模,使其符合基线条件。 二、快速排序 快速排序是最快排序算法之一,也是D&C典范。 对排序算法来说,简单数组是什么样子呢?就是根本不需要排序数组。 ?...(2)随机基准(未知待数组有序性时,推荐) 随机数算法随机选择一个元素作为划分基准,算法平均性能较好,从而避免了最坏情况多次发生。此时,它平均运行时间为O(nlogn)。...return a[low] (3)3分取值(待数组基本有序时,推荐) 选取数组开头,中间和结尾元素,通过比较,选择中间值作为快基准。...def number_of_three(arr,start,end): # 右移相当于除以2 mid = end + ((start - end) >> 1) if arr[mid

    48560

    【数据结构与算法】:插入排序与希尔排序

    1.排序基本概念与分类 排序是一种将一组对象按照某种特定顺序重新排列过程。在计算机科学中,排序是数据处理中非常基本且重要操作,它可以帮助人们更有效地理解和分析数据。...这里理牌方法,就是直接插入排序法。...,end可能会变成-1,这意味着tmp比有序序列中所有现有的元素都要小,应该被放在整个序列开始位置。...我们进行代码测试: 插入排序算法时间复杂度取决于输入数组中元素初始排序状态: 最坏情况 :如果数组是完全逆序,那么每次插入操作都需要将元素移到已排序部分开头。...,然后逐渐减少子列表数量,使整个列表趋向于部分有序,**最后当整个列表作为一个子列表进行插入排序时,由于已经部分有序,所以排序效率高。

    8010

    九键输入组合与四数之和——LeetCode 16、17 题记

    将字母串拆分组合这步,没想到特别好方法,我是先把 "abc" 转化成单字母列表,遍历 "def" 每一步都在之前列表所有元素尾加上新遍历字母,不断扩充列表拿到结果,细节我们看代码。...至于改进生成字母组合就没啥想法了,直接去题解与评论里观摩,发现两种可以借鉴思路:回溯法和 pythonic 列表推导式应用。...当然,过程也是类似,为了方便检索过程,对列表个序。...但防止结果中出现重复列表这步,感觉没法套用之前那种遇到相同元素就跳过,我直接用了 if 新结果 not in 结果列表 判断来实现,没想到还能通过测试。...但第一题参考题解中回溯法和看起来很拉风嵌套 for 循环列表推导式方法,目前也只是看得懂但用不来阶段,很受启发。 可能挖得还是不深,时间有点紧张,先这样吧。。。

    72830

    10条很棒Python一行代码

    1.交换两个变量 # a = 1; b = 2 a, b = b, a # print(a,b) >> 2 1 让我们从一个经典开始:通过简单地交换赋值位置来交换变量值——在我看来,这是直观方法...在这里,您可以使用它将列表元素分配给给定变量,这也称为解包。*将再次打包剩下值,这将导致c列表。它甚至可以用于*其他位置(例如列表开始或中间部分)。...你可以将它读为[start: stop: step],所以[1::2]翻译为从索引1元素开始(第二个元素),直到列表结束(第二个参数没有给出参数),并且总是采取两步。...4.删除列表多个元素 # a = [1,2,3,4,5] del a[::2] # print(a) >> [2, 4] 扩展切片语法也可以用来一次删除多个列表元素。...附注:如果愿意,还可以使用readlines()方法

    57930
    领券