Loading [MathJax]/jax/output/CommonHTML/config.js
社区首页 >问答首页 >如果元组的元素不在字符串列表中,则从元组列表中删除元组

如果元组的元素不在字符串列表中,则从元组列表中删除元组
EN

Stack Overflow用户
提问于 2019-06-17 08:28:30
回答 4查看 182关注 0票数 0

我正在编写一些代码,如果元组不包含单独列表中的所有字符串,则需要从元组列表中删除一个元组。我已经让它在for循环中工作,但我正在努力提高代码的效率。举个例子,如果我有

代码语言:javascript
代码运行次数:0
复制
list_of_tups = [('R', 'S', 'T'), ('A', 'B'), ('L', 'N', 'E'), ('R', 'S', 'T', 'L'), ('R', 'S', 'T', 'L', 'N', 'E')]
needed_strings = ['R', 'S', 'T']

我想在我的列表中保留以下元组:

代码语言:javascript
代码运行次数:0
复制
[('R', 'S', 'T'), ('R', 'S', 'T', 'L'), ('R', 'S', 'T', 'L', 'N', 'E')]

这在以下for-循环中工作:

代码语言:javascript
代码运行次数:0
复制
for s in needed_strings:
    for tup in list_of_tups:
        if s not in tup:
            list_of_tups.remove(tup)

然而,我希望通过列表理解来完成这一任务。我尝试这样做会产生一个元组列表,其中任何字符串,而不是所有字符串,都出现在元组中。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-06-17 08:32:59

您可以在嵌套的理解中使用all

代码语言:javascript
代码运行次数:0
复制
list_of_tups = [('R', 'S', 'T'), ('A', 'B'), ('L', 'N', 'E'), ('R', 'S', 'T', 'L'), ('R', 'S', 'T', 'L', 'N', 'E')]
needed_strings = ['R', 'S', 'T']

[t for t in list_of_tups if all(c in t for c in needed_strings)]

结果

代码语言:javascript
代码运行次数:0
复制
[('R', 'S', 'T'), ('R', 'S', 'T', 'L'), ('R', 'S', 'T', 'L', 'N', 'E')]

只要列表中包含可理解的项目,另一种可能更容易阅读的方法就是让needed_strings成为set。那么您可以使用issubset()

代码语言:javascript
代码运行次数:0
复制
list_of_tups = [('R', 'S', 'T'), ('A', 'B'), ('L', 'N', 'E'), ('R', 'S', 'T', 'L'), ('R', 'S', 'T', 'L', 'N', 'E')]
needed_strings = set(['R', 'S', 'T'])

[t for t in list_of_tups if needed_strings.issubset(t)]
票数 5
EN

Stack Overflow用户

发布于 2019-06-17 08:48:02

你可以试试这个,

代码语言:javascript
代码运行次数:0
复制
list_of_tups = [('R', 'S', 'T'), ('A', 'B'), ('L', 'N', 'E'), ('R', 'S', 'T', 'L'), ('R', 'S', 'T', 'L', 'N', 'E')]
needed_strings =['R', 'S', 'T']
y=[x for x in list_of_tups if set(needed_strings).issubset(set(x))] 
print(y)

产出:

代码语言:javascript
代码运行次数:0
复制
[('R', 'S', 'T'), ('R', 'S', 'T', 'L'), ('R', 'S', 'T', 'L', 'N', 'E')]
票数 1
EN

Stack Overflow用户

发布于 2019-06-17 08:53:00

代码语言:javascript
代码运行次数:0
复制
list_of_tups = [
    ('R', 'S', 'T'), 
    ('A', 'B'), 
    ('L', 'N', 'E'), 
    ('R', 'S', 'T', 'L'), 
    ('R', 'S', 'T', 'L', 'N', 'E')
]
needed_chars = {'R', 'S', 'T'}  # using a set to speed up membership operations

# Append the tuple element from the list of tuples if the condition is met
list_of_tups_removed = [
    tup
    for tup in list_of_tups
    if any(c in needed_chars for c in tup)  # if any of the characters are present in needed_chars 
]

print(list_of_tups_removed)

输出:

代码语言:javascript
代码运行次数:0
复制
[('R', 'S', 'T'), ('R', 'S', 'T', 'L'), ('R', 'S', 'T', 'L', 'N', 'E')]

列表理解语法只能用于创建新列表。它不能用于从现有列表中删除元素。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56635398

复制
相关文章
【Python】元组 tuple ③ ( 元组中 列表类型 元素值可修改 | 元组 while 循环遍历 | 元组 for 循环遍历 )
元组中的 元素 是 不可修改的 , 但是如果在 元组中 放入了一个 列表类型的元素 , 列表引用无法修改 , 但是列表中的 元素是可以修改的 ;
韩曙亮
2023/10/11
3510
python中的列表与元组
版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons)
六小登登
2019/08/14
3.1K0
11 - 去掉列表或元组中的重复元素
在python 中如何定义集合,集合与列表有什么区别 # 列表 a = [1, 2, 3, 4, 5] print(type(a)) # 元组 b = (1, 2, 3, 4, 5) print(type(b)) # 集合 c = {1, 2, 3, 4, 5} print(type(c)) <class 'list'> <class 'tuple'> <class 'set'> # 区别: # 1. 集合没有重复的元素,而列表可以有重复的元素 a = [1, 2, 2, 3, 4] print(a)
ruochen
2021/05/22
3.6K0
11 - 去掉列表或元组中的重复元素
python 元组列表排序
data = [(1, 'B'), (1, 'A'), (2, 'A'), (0, 'B'), (0, 'a')]
用户5760343
2019/07/07
1.1K0
python列表、元组(三)
一、列表 1. 创建列表 >>> name = ['gao', 'sam', 'snow', 'jey'] >>> type(name) <type 'list'> >>> name=list(['gao', 'sam', 'snow', 'jey'])   # python 3.0+ 会报错 >>> type(name) <type 'list'> >>> name = [] >>> type(name) <type 'list'> >>> name = list()   # python 3.0+ 会报
py3study
2020/01/13
5010
Python列表与元组
阅读文本大概需要 4.8 分钟 写在前面 经过一周的学习与试错,到现在基本上已经能够熟练掌握公众号的各项功能以及排版上的一些技巧了。从开始时的笨手笨脚,到现在略微的小有成就,说明其实每一天都在进步。 也许每一天的进步看起来可能微乎其微,但是坚持下来呢?如果以月、以年、以一生为单位的话会怎样呢? 今天在这里立个flag,一方面督促自己更好地坚持创作分享,和大家一起见证此公号的成长;另一方面也希望能给大家带来一些思考,开始着手于做自己感兴趣的事情。 分享给大家一句话:「当你决定好要做一件事情的时候那就开始吧,
Python技术与生活认知的分享
2018/07/03
7890
python列表、元组、字典
列表是由一序列特定顺序排列的元素组成的。可以把字符串,数字,字典等都可以任何东西加入到列表中,列表中的元素之间没有任何关系。列表也是自带下标的,默认也还是从0开始。列表常用方括号表示,即:[],元素用逗号隔开。
py3study
2020/01/15
1.2K0
python---列表、元组
列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储、修改等操作。
py3study
2020/01/06
4990
Python列表与元组
变量只能存一个数据,而集合能存储一组数据。本节我们来介绍两种Python中最常见的数据结构:列表与元组
小雨coding
2020/06/30
2.2K0
Python列表之元组
cmp    比较2个序列,返回值是一个整数  x==y 0 | x>y 返回正数
py3study
2020/01/14
6200
python的元组和列表
慕课网 首发了,放在垂直领域吧。简书备份。 在python中,最基本的数据类型就是序列。序列表示一系列有序的元素,列表,元组,字符串是python最常见的序列。 序列中每一个元素都会被分配一个序号,即元素的位置,也被称为index。所有的序列都可以进行某些操作,包括索引,分片,加,减,以及检查某个元素是否属于序列的成员。 元祖 a=[1,2,3,4,5] print(a[0:len(a):2]) print(a[-1::-1]) print(a[2:]) [1, 3, 5] [5, 4, 3, 2, 1
热心的社会主义接班人
2018/04/27
1.5K0
python 元组的列表排序
random = [(2, 2), (3, 4), (4, 1), (1, 3)]
用户5760343
2019/07/05
1.3K0
小议Python列表和元组中的元素地址连续性
众所周知,在Python中字典和集合依赖元素哈希表来存储,并不存在传统意义上的所谓元素“顺序”,当然,如果需要一个有序的字典可以使用collections模块提供的OrderedDict类。 在Python中,列表和元组属于有序序列,支持下标随机访问,也支持切片操作。当然,列表是可变序列而元组属于不可变序列,这一点决定了它们之间有很大不同。 今天的话题是列表和元组中的元素到底是不是连续存储的。了解C语言的朋友都知道,数组是连续存储的,所以可以下标来直接访问其中任意位置上的元素。而Head First Pyt
Python小屋屋主
2018/04/17
4.8K0
小议Python列表和元组中的元素地址连续性
Python中的循环:遍历列表、元组、字典和字符串
想想现实生活中的情况。你是一位在森林里测量树木的野外生物学家。你选一棵树,测量它的直径和高度,把它们写在你的笔记本上,估计它的总体积。接下来,你再选一棵树,测量它的直径和高度,把它们写在你的笔记本上,估计它的总体积。然后,你再选一棵树,测量它的直径和高度,把它们写在你的笔记本上,估计它的总体积。
deephub
2021/04/16
12.1K0
Python中列表和元组该怎么选?
列表(list)和元组(tuple)是 Python 中两种重要的数据结构。列表和元组之间有相似的地方也有不同的地方,了解两者的异同可以更好的使用它们,下面我们便对列表和元组做一个比较。
mr.songw
2021/01/14
1.5K0
Python中列表和元组该怎么选?
Python中对列表和元组的切片操作
# python中对列表和元组的切片操作 # 代码 # 切片方法用于列表、元组,切片方法不能用于字典 list_tmp = [0, 1, 2, 3, 4] tuple_tmp = (4, 3, 2, 1, 0) # 列表输出 print([0, 1, 2, 3, 4][1:3]) print(list_tmp[1:3]) # 元组输出 print((4, 3, 2, 1, 0)[1:3]) print(tuple_tmp[1:3]) # 运行结果 [1, 2] [1, 2] (3, 2) (3, 2)
benym
2022/07/14
2.3K0
python之列表、元组、字典
3 深拷贝和浅拷贝 1 浅拷贝: 当列表中存在有个列表时,其修改这个列表中列表的某一个元素时,其他被拷贝的列表中的对应元素也将被拷贝,其在拷贝这个列表中的列表时,拷贝的是这个内嵌列表的内存位置。
py3study
2020/01/14
2.8K0
Python列表、元组、字典操作
#!/usr/bin/python # -*- coding: UTF-8 -*- list1 = [1,2,'a', 'b'] seq = (1,4,5) print list1[2] #获取第三个元素(下标是从0开始) print list1[-3] #获取倒数第三个元素 print list1[2:] #获取第三个元素到最后一个 print len(list1) #获取列表元素个数 print max(list1) #获取最大的元素 print min(list1) #
苦咖啡
2018/04/28
1.7K0
Python 学习之元组列表
Python 的元组与列表类似,不同之处在于元组的元素不能修改。 元组使用小括号,列表使用方括号。 Tuple tuple 用小括号或者无括号来表示,是一连串有顺序的数字。 a_tuple = (12,3,5,15,6) another_tuple = 12,3,5,15,6 print(a_tuple) print(another_tuple) """ (12, 3, 5, 15, 6) (12, 3, 5, 15, 6) """ List list 是用中括号命名 a_list=[12,3,5,1
Python技术与生活认知的分享
2018/08/01
4810
Python 列表&元组&字典&集合
列表(list) 有序性,可存储任意类型的值 通过偏移存取,支持索引来读取元素,第一个索引为0 ,倒数第一个索引为-1 可变性 ,支持切片、合并、删除等操作 可通过索引来向指定位置插入元素 可通过pop()方法删除末尾元素,pop(索引位置)来删除指定位置元素 替换元素可直接通过赋值给对应的的索引位置 1 classMates = ['zhangsan','lisi','wangwu'] 2 print(classMates[0]) #通过索引来获取元素 3 print(classMates[-1]
py3study
2020/01/19
1.3K0

相似问题

如果满足某些条件,则从元组列表中删除元组。

62

如果满足某些条件,则从包含元组列表的列表中删除元组。

30

如果元素出现在字符串列表中,则从元组列表中获取元组。

14

根据给定的准则从元组列表中删除元组

31

从元组列表中组合元组元素。元组元素是元组和列表。

22
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文