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

相关文章

来自专栏张善友的专栏

Miguel de Icaza 细说 Mix 07大会上的Silverlight和DLR

Mono之父Miguel de Icaza 详细报道微软Mix 07大会上的Silverlight和DLR ,上面还谈到了Mono and Silverligh...

2707
来自专栏飞扬的花生

jsencrypt参数前端加密c#解密

      写程序时一般是通过form表单或者ajax方式将参数提交到服务器进行验证,如何防止提交的请求不被抓包后串改,虽然无法说绝对安全却给非法提交提高了难度...

3859
来自专栏张善友的专栏

LINQ via C# 系列文章

LINQ via C# Recently I am giving a series of talk on LINQ. the name “LINQ via C...

2645
来自专栏芋道源码1024

熔断器 Hystrix 源码解析 —— 断路器 HystrixCircuitBreaker

本文主要基于 Hystrix 1.5.X 版本 1. 概述 2. HystrixCircuitBreaker 3. HystrixCircuitBreaker....

5287
来自专栏落花落雨不落叶

canvas画简单电路图

61111
来自专栏跟着阿笨一起玩NET

c#实现打印功能

2702
来自专栏陈仁松博客

ASP.NET Core 'Microsoft.Win32.Registry' 错误修复

今天在发布Asp.net Core应用到Azure的时候出现错误InvalidOperationException: Cannot find compilati...

4848
来自专栏我和未来有约会

Kit 3D 更新

Kit3D is a 3D graphics engine written for Microsoft Silverlight. Kit3D was inita...

2526
来自专栏一个会写诗的程序员的博客

Spring Reactor 项目核心库Reactor Core

Non-Blocking Reactive Streams Foundation for the JVM both implementing a Reactiv...

2152
来自专栏pangguoming

Spring Boot集成JasperReports生成PDF文档

由于工作需要,要实现后端根据模板动态填充数据生成PDF文档,通过技术选型,使用Ireport5.6来设计模板,结合JasperReports5.6工具库来调用渲...

1.2K7

扫码关注云+社区