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

python中的=="i“应该匹配迭代的i而不是文字i,有什么办法吗?

在Python中,使用"=="运算符进行比较时,确实会匹配迭代的i而不是文字i。如果想要匹配文字i,可以使用字符串比较的方式来实现。

一种方法是使用字符串的equals()方法进行比较,示例如下:

代码语言:txt
复制
text = "i"
if text.equals("i"):
    # 匹配文字i
    print("匹配成功")
else:
    print("匹配失败")

另一种方法是将迭代的i转换为字符串,然后进行比较,示例如下:

代码语言:txt
复制
text = "i"
if str(text) == "i":
    # 匹配文字i
    print("匹配成功")
else:
    print("匹配失败")

这两种方法都可以实现匹配文字i的目的。在实际开发中,可以根据具体情况选择适合的方法来解决该问题。

关于Python中的字符串比较和转换,可以参考腾讯云的Python开发文档:Python开发文档

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

相关·内容

你所不知道的「删除」操作

在 Python 中,有删除作用的一般是 del、remove 和 pop,相信很多人都用过,但是不是真的会有待商榷,下面我们先来看一个例子: lst1 = [1,2,3,4] lst2 = [1,2,3,4...lst4.pop(i) 上述的代码运行完以后,你知道列表 lst1 ~ lst4 此时变成了什么吗?...lst1 前后没有改变;「remove」是会删除第一个匹配到的指定值,而不是说特定的索引,如果没有找到指定值的话会抛出 ValueError 异常;最后的「pop」则会删除指定索引处的元素并且返回它,...看了上面对于三者「删除」之间的不同,然后我再来解释「为什么输出是 [2,4]」就很好理解了: Python 中列表迭代是按照索引进行的,所以当我们从 lst2 或者 lst4 中删除索引为0,也就是元素...现在我们明白了问题所在,在最后我想再补充一点:在文章最初,代码中「在迭代时修改对象」是一种很 stupid 的做法,正确的做法应该是迭代对象的副本,如 lst3[:] 这种做法才是我们应该学习的正确做法

36820
  • 你所不知道的「删除」操作。

    在 Python 中,有删除作用的一般是 del、remove 和 pop,相信很多人都用过,但是不是真的会有待商榷,下面我们先来看一个例子: lst1 = [1,2,3,4] lst2 = [1,2,3,4...lst4.pop(i) 上述的代码运行完以后,你知道列表 lst1 ~ lst4 此时变成了什么吗?...lst1 前后没有改变;「remove」是会删除第一个匹配到的指定值,而不是说特定的索引,如果没有找到指定值的话会抛出 ValueError 异常;最后的「pop」则会删除指定索引处的元素并且返回它,...看了上面对于三者「删除」之间的不同,然后我再来解释「为什么输出是 [2,4]」就很好理解了: Python 中列表迭代是按照索引进行的,所以当我们从 lst2 或者 lst4 中删除索引为0,也就是元素...现在我们明白了问题所在,在最后我想再补充一点:在文章最初,代码中「在迭代时修改对象」是一种很 stupid 的做法,正确的做法应该是迭代对象的副本,如 lst3[:] 这种做法才是我们应该学习的正确做法

    32710

    Python for死循环

    是一个可迭代对象,而不是真的序列对象。...可能是因为for i in range的i和i = 0的i不是同一个i,是不是同一个可以通过使用id这个内置函数查看内存地址就行。不要只知其然,还要知其所以然! ? 为什么会选择从300开始循环?...从结果中我们也非常容易的看出来,因为地址不同,两个i并不是同一个i。...itertools模块中的类 count 难道一定要自己定义类?难道没有相应的库给一个无限迭代的类吗?...实际上无限迭代的东西Python确实有封装,实例化出来一个无穷迭代的对象的类确实有,大部分位于itertools模块,比如count,cycle,repeat…… count的构造方法有两个默认参数,第一个参数是开始计数

    10K20

    牺牲时间换取更少的空间,牺牲空间换取更快的时间!

    数据存入文件,彻底减少内存占用 问题来了,难道大量数据进行操作真的一点办法都没有吗?...到这里为止,前面讲的东西不管你是做什么的,一定要懂!!!(不懂加群,群号加群方式见文末)之后的讲的只要Python程序员会就行了。...既然是产生一个整数序列,输出应该是一个列表。 ? 迭代器 然而并不是,这东西到底是什么呢?!因为range函数返回的是一个可迭代对象(类型是对象),而不是列表类型, 所以打印的时候不会打印列表。...但是问题还是有的,range只能有规律的迭代,而且只能是整数。如果数据不是整数难道就必须创建列表了吗?并不是,该介绍接下来的主角——迭代器!迭代器的使用方法如下。 ?...在函数中使用生成器 Python有一个更简单的东西可以直接从函数中实现迭代,它就是生成器,下面我来演示一下在函数中使用生成器。 ?

    1.2K30

    Python进阶系列:Python遍历的秘密

    可迭代对象,迭代器,生成器,相信许多学习Python的小伙伴或多或少都听说过,但你真的知道他们的区别吗?真的知道为什么需要这些概念吗?...本文字数2000+,不适合初学者,阅读本文需要你有以下Python基础知识: - 认识列表(list) - for循环等基本语法。 - 自定义类型,方法。...迭代器的由来 你可能会疑惑,为什么多此一举,非要弄一个所谓的迭代器出来? 可以把状态值 i ,保存在列表对象中啊。 答案是,因为在嵌套for遍历的时候,需要两个for的状态值 i 是独立分开的。...看下图: - 如果状态值 i 直接保存在列表对象中,那么这里的嵌套遍历就乱套了。 - 可见,这里 Python 会为我们创建了2个独立的迭代器,独立维护了2个状态值 i 。...生成器其实就是一种迭代器 所谓的生成器,指定的是一种不断生成输出东西的事物,同样地可以通过 next 方法从生成器上获取输出。 是不是与迭代器的概念不谋而合?那又是为什么弄这样的一个概念出来?

    62920

    Python进阶系列:Python遍历的秘密

    前言 可迭代对象,迭代器,生成器,相信许多学习Python的小伙伴或多或少都听说过,但你真的知道他们的区别吗?真的知道为什么需要这些概念吗?...本文字数2000+,不适合初学者,阅读本文需要你有以下Python基础知识: - 认识列表(list) - for循环等基本语法。 - 自定义类型,方法。...迭代器的由来 你可能会疑惑,为什么多此一举,非要弄一个所谓的迭代器出来? 可以把状态值 i ,保存在列表对象中啊。 答案是,因为在嵌套for遍历的时候,需要两个for的状态值 i 是独立分开的。...看下图: - 如果状态值 i 直接保存在列表对象中,那么这里的嵌套遍历就乱套了。 - 可见,这里 Python 会为我们创建了2个独立的迭代器,独立维护了2个状态值 i 。...生成器其实就是一种迭代器 所谓的生成器,指定的是一种不断生成输出东西的事物,同样地可以通过 next 方法从生成器上获取输出。 是不是与迭代器的概念不谋而合?那又是为什么弄这样的一个概念出来?

    1.1K30

    面试必备 | 带你彻底搞懂 Python 生成器。

    本文字数:2281 字 阅读本文大概需要:6 分钟 写在之前 Python 的高级语言特性一直是我们学习 Python 的一个难点,大部分人并没有做到熟练的掌握,甚至去学习它都感觉很困难,「生成器」作为其中甚是有用的特性之一...其实不光是对于「生成器」而言,对于其它的高级语言特性还是建议大家要花点时间去搞懂的,不说其它,这些东西作为面试中常考的内容也应该引起你的重视,毕竟公司不是傻瓜,没有用的东西干嘛要考你?...对象就是「可迭代对象」,即实现了迭代器协议的对象,它实现了迭代器协议。其实像是 Python 中 for 循环,sum 函数等等就是使用迭代器协议访问对象。...Python 使用生成器对「延迟操作」提供了支持,所谓「延迟操作」就是在需要它的时候才产生结果,而不是说立即产生结果。...看看用生成器来做同样的功能,到底有什么不同: def get_odd(lst): for i in lst: if i % 2: yield i def

    34020

    【Leetcode之路 | Java & Python】两数之和(暴力枚举&哈希表)

    优化: 思考如何在第一步的基础上,如何优化算法,降低时间复杂度。 构思代码: 有了以上两步,我们此时应该已经有了一个正确的想法,此时我们应该构思代码,有那几部分,每部分实现什么功能,代码怎么写。...而不是直接闷头去写代码,没想清楚直接去写代码,会导致写了一半发现思路不对,写的代码都是错误的。 写代码: 实现第三步代码。...(Debug): 如果我们的题目没有通过测试,应该检查代码是不是有bug、思路对不对等。...总结与反思: 题目通过了,我们应该总结一下这道题考察的知识点、切入的角度、同类型的题目等,同时思考有没有更优的办法。 做到以上几点,一道题学习的就很透了,遇到同类型的题目可以举一反三啦。...取值时,先对指定的键求Hash值,再和容量取模得到底层数组中对应的位置,如果指定的键值与存贮的键相匹配,则返回该键值对,如果不匹配,则表示哈希表中没有对应的键值对。

    58210

    Python基础面试,看这篇文章画重点吧

    为什么有这个系列的文章 一直想写一些更加基础的文章,但是总是想不到好的点子,最近到了就业季,一大堆学生面临就业了,正好,从Python的面试题出发,分析和解答一些常见的面试题,并且总结一些文字。...分析:这题考察的是对Python内置函数的了解程度 Python常见的内置函数有 ?...else: print("fibo:") for i in range(1,m): print(fibo(i)) 解法3: 迭代,用递归当数据大的时候,会出现效率问题 def...time.clock()说明 cpu 的运行机制:cpu是多任务的,例如在多进程的执行过程中,一段时间内会有对各进程被处理。...,博主后面2个办法,实在高级,贴给大家 https://blog.csdn.net/chichu261/article/details/83589767 第3题:列出几个python标准库 你先明确的是什么是

    44210

    长篇大论Python生成器

    比较有意思的事情是,曾经有人建议生成器函数不应该使用def,而应该发明一个新的关键字比如gen,但是Python之父Guido并没有同意这样做。...生成器的作用其实是解决内存的问题,比如我们都知道Python的正则表达式有一个re.findall()函数,它会把所有匹配到的元素都一次性写入内存中,假如匹配到的数据很多,就会占用大量的内存。...为了解决这个问题,Python3有一个re.finditer()函数,返回的就是一个生成器,取值时才生成数据放入内存中,能节省大量内存。...标准库中的生成器函数 实现生成器时要知道标准库中有什么可用,否则很可能会重新发明轮子。有些是内置的,有些在itertools模块中,有些functools模块中。...比如生成器函数需要产出另一个生成器生成的值,传统的解决办法是使用for循环: def chain(*iterables): for it in iterables: for i

    40110

    算法君带你学算法(1):求最长回文字符串

    还是先给我讲一下什么是回文字符串吧! 算法君:回文字符串吗!首先是一个字符串(废话),然后,核心就是回文。“回”吗,就是来来回回的意思。...不是让你判断是否为回文字符串,是要在一个字符串中寻找最长回文字符串,例如,akbubk是一个字符串,这里边有很多回文字符串,其实单个字母就是一个回文字符串,还有就是bub、kbubk,很显然,最长的回文字符串就是...而寻找akbubk中最长回文字符串的过程中,肯定是从长度为1的子字符串开始搜索,然后是长度为2的字符串,以此类推,所以bub一定比kbubk先搜索到,所以需要将bub是回文字符串的结果保存起来,如果要判断...通过key搜索是否为回文的历史记录,也就是搜索value,在Python中字典可以实现这个功能。用字典可以吗? 算法君:字典算是一种实现,你想想用字典具体应该如何实现呢?...算法小白:这个我知道,Python我已经很熟悉了。可以将i和j作为一个列表,然后作为字典的key,不不不,该用元组,Python中是不支持将列表作为字典的key的。

    76320

    统计师的Python日记【第九天:正则表达式】

    用正则表达式处理Pandas数据 (1)匹配行 (2)提取匹配文字 (3)提取匹配文字的一部分 ---- 统计师的Python日记【第9天:正则表达式】 前言 根据我的Python学习计划: Numpy...先来分析一下: 首先两个PD不是必须的,有的有、有的没有,但后面(XX)括号里面两个数字是必须的,我就按照这样的模式来获取红色字体部分: pattern = re.compile('P?D?...成功匹配出来了。 方法二: 思路是将匹配行的索引记录下来,而不是观测值: pattern = re.compile('P?D?\D\d{2}\D\s?...\d{4}-\d{4} 这个表达式和红色字体部分是对应的。那么有一个问题,假如我想提取出来这段匹配文字的任一部分呢?...(4)总结 虽然具体的问题千奇百怪,但核心的方法都是一样的,正则表达式函数+迭代 = Pandas数据的处理。考验的还是Python技巧的综合运用。

    1.8K40

    【刷题之路 | Java & Python】两数之和(暴力枚举&哈希表)

    优化: 思考如何在第一步的基础上,如何优化算法,降低时间复杂度。 构思代码: 有了以上两步,我们此时应该已经有了一个正确的想法,此时我们应该构思代码,有那几部分,每部分实现什么功能,代码怎么写。...而不是直接闷头去写代码,没想清楚直接去写代码,会导致写了一半发现思路不对,写的代码都是错误的。 写代码: 实现第三步代码。...(Debug): 如果我们的题目没有通过测试,应该检查代码是不是有bug、思路对不对等。...总结与反思: 题目通过了,我们应该总结一下这道题考察的知识点、切入的角度、同类型的题目等,同时思考有没有更优的办法。 做到以上几点,一道题学习的就很透了,遇到同类型的题目可以举一反三啦。...取值时,先对指定的键求Hash值,再和容量取模得到底层数组中对应的位置,如果指定的键值与存贮的键相匹配,则返回该键值对,如果不匹配,则表示哈希表中没有对应的键值对。

    43820

    【C++】vector问题解决(非法的间接寻址,迭代器失效 , memcpy拷贝问题)

    ,而不是使用vector类的模版,是为了兼容更多的数据类型)。...非法的间接寻址的造成原因有很多: 空指针引I用:当一个指针没有被初始化或者为NULL时,对它进行间接寻址操作会导致非法访问。...我们分析一下我们遇到的问题是那种问题?空指针引用吗?不可能!野指针引用吗?也不可能!!! 那么真相只有一个:我们遇到了类型不匹配的问题,那这是来自哪里的呢???...: 迭代器的指向发生了改变,我们实现的迭代器的底层是指针,我们插入之后指针位置不变,而数组元素改变,自然会产生不一样的结果。...迭代器就失效了,这个解决办法也很简单,就是插入之后不要使用之前的迭代器!!!一定要对迭代器进行更新。

    25110

    如何遍历pandas当中dataframe的行

    对于每一行,都希望能够通过列名访问对应的元素(单元格中的值)。...iterrows()快 但请注意,根据文档(目前 Pandas 0.19.1): iterrows:数据的dtype可能不是按行匹配的,因为iterrows返回一个系列的每一行,它不会保留行的dtypes...(dtypes跨DataFrames列保留)* iterrows:不要修改行 你不应该修改你正在迭代的东西。...根据数据类型的不同,迭代器返回一个副本而不是一个视图,写入它将不起作用。...另外,记得关注我的简书号马哥学Python,这样你就不会错过任何有价值的文章! 我会阅读所有的评论,所以无论你有什么想要说的,或者是想要分享的,甚至是问题之类的,都可以在下面留言。

    4K40

    深入理解迭代器和生成器

    但是,你想过 Python 在处理 for in 语句的时候,具体发生了什么吗?什么样的对象可以被 for in 来枚举呢?...True 通过这段代码,你就可以知道,给出的类型中,除了数字 1234 之外,其它的数据类型都是可迭代的。 生成器,又是什么?...当然,要注意,这里“更少”的前提是清晰,而不是使用更多的魔术操作,虽说减少了代码却反而增加了阅读的难度。 回归正题。接下来我们再来看一个问题:给定两个序列,判定第一个是不是第二个的子序列。...而 (i in b) 需要好好揣摩,这里你是不是能联想到 for in 语句?...我们会在下节课,继续深入讲解 Python 协程。 思考题 最后给你留一个思考题。对于一个有限元素的生成器,如果迭代完成后,继续调用 next() ,会发生什么呢?生成器可以遍历多次吗?

    35620
    领券