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 条评论
登录 后参与评论

相关文章

来自专栏iOS开发攻城狮的集散地

run timeimport : 成员变量、类、方法

1769
来自专栏LEo的网络日志

python技巧分享(十一)

1364
来自专栏Python小屋

详解Python序列解包

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

3237
来自专栏算法channel

Python|编写自己的类

01 类(对象) class dog(object) 以上定义了一个dog对象,它继承于根类object. 02 类的属性 def __init__(s...

3645
来自专栏Python小屋

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

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

3315
来自专栏java学习

Java每日一练(2017/7/24)

本期题目: (单选题) 1、与InputStream流相对应的Java系统的“标准输入对象”是() A System.in B System.out C Sy...

3568
来自专栏菜鸟计划

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

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

3678
来自专栏IT可乐

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

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

1947
来自专栏coding

python实用技巧:在列表,字典,集合中快速筛选数据

1515
来自专栏吴裕超

ES6之模版字符串

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

631

扫码关注云+社区