Python基础知识--Slice(切片)和Comprehensions(生成式)
最近在Youtube的Python视频教程上学习Python相关的基础知识,视频由Corey Schafer制作,讲得十分简单明了,英文发音也比较清晰,几乎都能听懂,是一个不错的Python入门学习的视频,同时还能学学英语。本篇博客用代码记录一下所学的相关基础知识,虽然很简单,但是自己再写一遍加深印象。
Slicing Lists and Strings(切片)
切片用来操作list和string类型,以下几个例子差不多可以掌握切片了。
# 语法 list[start:end:step]
my_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
# -10,-9,-8,-7,-6,-5,-4,-3,-2,-1
print my_list[1:5]
# result : [1, 2, 3, 4]
print my_list[-7:-2]
# result : [3, 4, 5, 6, 7]
print my_list[:]
# result : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
#间隔为2
print my_list[1:8:2]
# result : [1, 3, 5, 7]
#反转list
print my_list[::-1]
# result : [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
#String同样可以用切片
sample = "hello world"
print sample[::-1]
# result : dlrow olleh
Comprehensions (生成式)
生成式可以用十分简洁的语言生成多种list。
nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
my_list = []
# 01---I want 'n*n' for each 'n' in nums
# 传统方式
# for n in nums:
# my_list.append(n)
# 生成式
my_list = [n*n for n in nums]
print my_list
# result : [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
# 02---I want 'n' for each 'n' in nums if 'n' is even
# 传统方式
#for n in nums:
# if n%2 == 0:
# my_list.append(n)
# 生成式
my_list = [n for n in nums if n%2==0]
print my_list
# result : [2, 4, 6, 8, 10]
# 03--- I want a (letter, num) pair for each letter in "abc" and each num in "012"
#传统方式
#for letter in 'abc':
# for num in range(3)
# my_list.append((letter,num))
# 生成式
my_list = [(letter, num) for letter in 'abc' for num in range(3)]
print my_list
# result :[('a', 0), ('a', 1), ('a', 2), ('b', 0), ('b', 1), ('b', 2), ('c', 0), ('c', 1), ('c', 2)]
# Dictionary Comprehensions
names = ['Bruce', 'Clark', 'Peter']
heros = ['Batman', 'Superman', 'Spiderman']
# I want a dict{'name':'hero'} for each name, hero in zip(name, heros)
# 传统方式
my_dict = {}
#for name, hero in zip(names, heros):
# my_dict[name] = hero
# 生成式 注意为大括号
my_dict = {name: hero for name, hero in zip(names, heros)}
print my_dict
# result : {'Bruce': 'Batman', 'Peter': 'Spiderman', 'Clark': 'Superman'}
# Set Comprehensions
nums = [1, 1, 2, 3, 3, 4, 5 ]
# 生成式 注意为大括号
my_set = {n for n in nums}
print my_set
# result set([1, 2, 3, 4, 5])
Python基础知识--Slice(切片)和Comprehensions(生成式)的更多相关文章
- Python基础(slice切片)
l = ['傻狗1','傻狗2','傻狗3','傻狗4','傻狗5','傻狗6'] print(l[0:3])#['傻狗1', '傻狗2', '傻狗3'] numbers = list(range(1 ...
- python基础知识小结-运维笔记
接触python已有一段时间了,下面针对python基础知识的使用做一完整梳理:1)避免‘\n’等特殊字符的两种方式: a)利用转义字符‘\’ b)利用原始字符‘r’ print r'c:\now' ...
- Python开发【第二篇】:Python基础知识
Python基础知识 一.初识基本数据类型 类型: int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位 ...
- Python基础知识(五)
# -*- coding: utf-8 -*-# @Time : 2018-12-25 19:31# @Author : 三斤春药# @Email : zhou_wanchun@qq.com# @Fi ...
- Python基础知识(四)
Python基础知识(四) 一丶列表 定义格式: 是一个容器,由 [ ]表示,元素与元素之间用逗号隔开. 如:name=["张三","李四"] 作用: 存储任意 ...
- python基础知识(二)
以下内容,作为python基础知识的补充,主要涉及基础数据类型的创建及特性,以及新数据类型Bytes类型的引入介绍
- python 基础知识(一)
python 基础知识(一) 一.python发展介绍 Python的创始人为Guido van Rossum.1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本 ...
- python基础知识讲解——@classmethod和@staticmethod的作用
python基础知识讲解——@classmethod和@staticmethod的作用 在类的成员函数中,可以添加@classmethod和@staticmethod修饰符,这两者有一定的差异,简单来 ...
- python爬虫主要就是五个模块:爬虫启动入口模块,URL管理器存放已经爬虫的URL和待爬虫URL列表,html下载器,html解析器,html输出器 同时可以掌握到urllib2的使用、bs4(BeautifulSoup)页面解析器、re正则表达式、urlparse、python基础知识回顾(set集合操作)等相关内容。
本次python爬虫百步百科,里面详细分析了爬虫的步骤,对每一步代码都有详细的注释说明,可通过本案例掌握python爬虫的特点: 1.爬虫调度入口(crawler_main.py) # coding: ...
随机推荐
- springmvc封装list个数限制问题
提交一颗树,三级区域个数大于1000个导致提交失败!!! org.springframework.beans.InvalidPropertyException: Invalid property 'd ...
- RxJava 中的map与flatMap
1.map和flatMap都是接受一个函数作为参数(Func1) 2.map函数只有一个参数,参数一般是Func1,Func1的<I,O>I,O模版分别为输入和输出值的类型,实现Func1 ...
- Java程序中解决数据库超时与死锁
Java程序中解决数据库超时与死锁 2011-06-07 11:09 佚名 帮考网 字号:T | T Java程序中解决数据库超时与死锁,每个使用关系型数据库的程序都可能遇到数据死锁或不可用的情况 ...
- python全栈学习笔记(一)网络基础之网络协议篇
阅读目录 一.操作系统基础 二.网络通信原理 2.1 互联网的本质就是一系列的网络协议 2.2 osi七层协议 2.3 tcp/ip五层模型讲解 2.3.1 物理层 2.3.2 数据链路层 2.3.3 ...
- 允许远程链接mysql,开放3306端口
首先查看端口是否打开 netstat -an|grep 3306 此图为开启3306端口的截图,之前显示为. . . 127.0.0.1:3306 . . . 打开mysql配置文件vi /etc/m ...
- January 17 2017 Week 3 Tuesday
You can't shake hands with a clenched fist. 紧握拳头你就无法与他人握手. If you want to shake hands with others, j ...
- 贝叶斯网络(Bayesian network))简介(PRML第8.1节总结)概率图模型(Graphical models)
转:http://www.cnblogs.com/Dzhouqi/p/3204353.html 部分图为手写,由于本人字很丑,望见谅,只是想把PRML书的一些部分总结出来,给有需要的人看,希望能帮到一 ...
- [转]How to Leak a Context: Handlers & Inner Classes
Consider the following code: public class SampleActivity extends Activity { private final Handler mL ...
- 使用react-redux开发的简单步骤
一.安装相关包 npm install redux react-redux --save 二.根据具体情形创建模块文件 Store.js.Reducer.js.Actions.js Store.js的 ...
- PhoneGap 的存储 API_Web Sql
一.介绍 此 API 基于 W3C WEB SQL Database Specification 和 W3C Web Storage API Specification. 有些 设备已经提供了对该规范 ...