首页
学习
活动
专区
工具
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.4K30

写的代码又被喷?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等价于Python2的iteritems。

89860
  • 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 =

    59210

    【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.3K70

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

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

    64420

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

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

    95220

    手把手教你学会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 的和。

    55450

    几段代码,测测你是 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)。...当你实现一个小功能后,去网上搜一下,别人是怎么写的,对比下是不是比你自己的更好。举个例子:如何从列表中删除重复元素。

    73080

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

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

    86530

    快速排序算法介绍

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

    71810

    【从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

    49260

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

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

    73830

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

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

    10110

    7 种简洁 Python 语法,教你码出一手好代码

    : a and b or c True and [] or [1] -> [1], but: [] if True else [1] -> [] 3、通过列表推导式移除重复的元素 让我们来把字符串 x...for a in [[None]] for b in a] 列表切片技巧 1.复制列表: l = [1, 2, 3] m = l[:] m -> [1, 2, 3] 2.移除/替换 列表中的任意元素:...l = [1, 2, 3] l[1:-1] = [4, 5, 6, 7] l -> [1, 4, 5, 6, 7, 3] 3.在列表的开头添加元素: l = [1, 2, 3] l[:0] = [4,..., 5, 6] 5.反转列表: l = [1, 2, 3] l[:] = l[::-1] 6、替换方法字节码 Python 阻止替换类实例中的方法,因为 python 给类实例中的方法赋予了只读属性:...Python 的语法、风格都与英文的书写习惯非常接近,Python 的这种风格被称为 Pythonic,如条件表达式,在 Java 和 C++ 中是这样的: int min = x < y ?

    57620
    领券