python技巧分享(十一)

这是一个系列文章,主要分享python的使用建议和技巧,每次分享3点,希望你能有所收获。

1 遍历list时每次读取2个元素

my_list = [0, 'apple', 1, 'banana', 2, 'grape', 3, 'pear']
my_iter = iter(my_list)
for e in my_iter:
    print e, next(my_iter)

'''
0 apple
1 banana
2 grape
3 pear
'''

借助iter函数,传入list生成一个迭代器,然后遍历该迭代器,并调用next函数输出迭代器的下一个元素,到达每次读取list中2个元素的目的。需要说明一下,list的元素最好是偶数个,否则读取最后一对元素时,会由于迭代器元素已经读取完毕,导致抛出StopIteration异常。

2 split字符串时忽略引号中的空格

import shlex

my_str = 'a b c "d e f" g'
print shlex.split(my_str)
# ['a', 'b', 'c', 'd e f', 'g']

print my_str.split()
# ['a', 'b', 'c', '"d', 'e', 'f"', 'g']

示例中,通过shlex.split函数,在split带有引号的字符串时,会自动忽略引号中的空格,将引号中的字符串当成一个完整字符串。如果使用字符串自带的split函数,会发现引号中字符串被split成3段。如果字符串中有空格,且想单独split成一个元素,可以通过该方式实现。

3 遍历list时同时获取索引和值

my_list = ['a', 'b', 'c', 'd']
for idx, ch in enumerate(my_list):
    print idx, ch

print '-' * 3

for idx, ch in enumerate(my_list, 1):
    print idx, ch

'''
0 a
1 b
2 c
3 d
---
1 a
2 b
3 c
4 d
'''

有时遍历list需要获取元素的索引,借助enumerate函数,可以轻易实现该功能,并且enumerate函数还可以指定索引的初始值。由示例中可以看到,当指定了索引的起始值为1时,索引在1的基础之上依次自增,默认索引是从0开始,所以可以同时获取list元素的索引和值。

LEo at 00:05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大前端_Web

详解javascript作用域和闭包

版权声明:本文为吴孔云博客原创文章,转载请注明出处并带上链接,谢谢。 https://blog.csdn.net/wkyseo/article/deta...

1084
来自专栏吴裕超

ES6之模版字符串

  但是我们可以看到:这样的传统做法需要使用大量的“”(双引号)和 + 来拼接才能得到我们需要的模版。但是这样是十分不方便的。

631
来自专栏web前端教室

var a="xx";a=a+"ss";a的值变了,但"xx"字符串并没有变

如题目所示, var a="xx"; a=a+"ss"; console.log(a); //xxss 一般情况下,我们就可以认为此时a的值,由'xx'变成了'...

1878
来自专栏IT可乐

深入理解计算机系统(3.5)------特殊的算术操作指令

  在上一篇博客 算术和逻辑操作 我们介绍了如下图几种常用的算术逻辑指令,但是大家发现没,这几种指令如果在 IA32 上只能操作32位寄存器,比如我用乘法指令I...

1937
来自专栏北京马哥教育

Linux Shell 流程控制语句实例

linux shell 有一套自己的流程控制语句,其中包括条件语句(if),循环语句(for,while),选择语句(case)。下面我将通过例子介绍下,各个...

3677
来自专栏Python小屋

详解Python序列解包

序列解包(Sequence Unpacking)是Python中非常重要和常用的一个功能,可以使用非常简洁的形式完成复杂的功能,大幅度提高了代码的可读性,减少了...

3217
来自专栏Python小屋

Python中相同的值在内存中到底会保存几份

Python采用基于值的内存管理模式,相同的值在内存中只有一份。这是很多Python教程上都会提到的一句话,但实际情况要复杂的多。什么才是值?什么样的值才会在内...

3315
来自专栏LEo的网络日志

python技巧分享(十一)

2418
来自专栏零基础使用Django2.0.1打造在线教育网站

关于JAVA你必须知道的那些事(二):封装

时隔近一年,我突然想起来这个文章还没有发完,所以就继续开始写。也不知道自己上次写到哪里了,不管了这里从面向对象的三个特性说起。

731
来自专栏菜鸟计划

javascript 变量、作用域和内存问题

一、基本类型和引用类型的值   1.基本类型和引用类型的值  基本类型值:指那些保存在栈内存中的简单数据,即这种值完全保存在内存中的一个位置,他们所占据的空间大...

3678

扫码关注云+社区