Python基础 6 ---- Python 元组+列表+字典+文件

本文转载自点击打开链接

     Python的元组、列表、字典数据类型是Python内置的数据结构。这些结构都是经过足够优化后的,所以如果使用好的话,在某些地方将会有很大的益处。


1元组

     个人认为就像C++的数组,Python中的元组有以下特性

  • 任意对象的有序集合,这条没啥说的,数组的同性
  • 通过偏移读取
  • 一旦生成,不可改变
  • 固定长度,支持嵌套

    代码:

    >>> (0, 'haha', (4j, 'y'))
    (0, 'haha', (4j, 'y'))
    >>> t = (1, 3, 'b')
    >>> t[2]
    'b'
    >>> t[3]   

    Traceback (most recent call last):
      File "#41>", line 1, in <module></module>
        t[3]
    IndexError: tuple index out of range
    >>> t[-1]
    'b'
    >>> t[0:-1]
    (1, 3)
    >>> t * 2
    (1, 3, 'b', 1, 3, 'b')
    >>> for x in t:
        print x,   

    1 3 b
    >>> 'b' in t
    True
    >>> q = t + ((3, 'abc'))
    >>> q
    (1, 3, 'b', 3, 'abc')
    >>> for x in (2, (3, 'a')):
        print x   

    2
    (3, 'a')
    >>> len(q)
    5
    >>> len((2, (3, 'abc')))
    2
    >>> (1, 2, 3)[1]
    2
    >>> q[1] = 'd'   

    Traceback (most recent call last):
      File "#57>", line 1, in <module></module>
        q[1] = 'd'
    TypeError: 'tuple' object does not support item assignment
    >>> a = ('b', 'c', q)
    >>> 1 in a
    False
    >>> q in a
    True
    >>> a
    ('b', 'c', (1, 3, 'b', 3, 'abc'))
    >>> q='d'
    >>> a
    ('b', 'c', (1, 3, 'b', 3, 'abc')) 

上面的例子足以说明大部分了,使用元组时最重要的一点是“一旦生成,就不可变了”。

2 列表

     列表就像C++里的vector,所具有的特性也要比元组更多,更灵活,其特点总结如下

  • 任意对象的有序集合
  • 可通过偏移存取,注意,列表中的元素都是可变的,这是不同于元组的
  • 长度可变,支持嵌套
  • 还有一些类似java的对象引用机制

      由于列表的这些特性,使得列表在实际应用中被广泛使用,下面是一些例子。

 (1) 首先是基本用法

  代码

    >>> l = ['a', 'b', 'c']
    >>> len(l)
    3
    >>> l + ['d']
    ['a', 'b', 'c', 'd']
    >>> l * 2
    ['a', 'b', 'c', 'a', 'b', 'c']
    >>> for x in l:
        print x,   

    a b c 

 

 (2) 索引和分片,赋值(单个元素赋值,分片赋值)

   代码

>>> l = ['abc', 'def', 'ghi', 123]
    >>> l[2]
    'ghi'
    >>> l[-3]
    'def'
    >>> l[:3]
    ['abc', 'def', 'ghi']
    >>> l[1] = 'haha'
    >>> l
    ['abc', 'haha', 'ghi', 123]
    >>> l[1:] = ['apple', 'banana']
    >>> l
    ['abc', 'apple', 'banana']
    >>> l[2] = [123, 345, 456]
    >>> l
    ['abc', 'apple', [123, 345, 456]]
    >>> l[1:] = [123, 234, 345, 456, 567]
    >>> l
    ['abc', 123, 234, 345, 456, 567] 

 

 (3) 添加、排序、删除操作

  代码

   >>> l = ['abc', 'def', 'ghi', 123]
    >>> l.append(456)
    >>> l
    ['abc', 'def', 'ghi', 123, 456]
    >>> l.sort()
    >>> l
    [123, 456, 'abc', 'def', 'ghi']
    >>> del l[0]
    >>> l
    [456, 'abc', 'def', 'ghi']
    >>> del l[2:]
    >>> l
    [456, 'abc']   

 

 (4)一些有趣的用法(来自论坛 id—咖啡舞者)

   去掉列表中每个元素头尾的空格

  代码

    >>> freshfruit = [' banana', ' loganberry ', 'passion fruit ']
    >>> [str.strip() for str in freshfruit]
    ['banana', 'loganberry', 'passion fruit']  

 

    把列表中,大于3的元素,乘以2:

   代码

    >>> vec = [2, 4, 6]
    >>> [2*x for x in vec if x > 3]
    [8, 12]   

    把列表1的每一个元素和列表2的每一个元素相乘:

   代码

   >>> lst1 = [2, 4, 6]
    >>> lst2 = [4, 3, -9]
    >>> [x*y for x in lst1 for y in lst2]
    [8, 6, -18, 16, 12, -36, 24, 18, -54]  

 

    取获[0-10)的平方:

   代码

  1. [x**2 for x in range(10)] 

 3
字典

     Python里的字典就像C++里的map,以键值对的方式存在并操作,其特点如下

  • 通过键来存取,而非偏移量;
  • 键值对是无序的;
  • 键和值可以是任意对象;
  • 长度可变,任意嵌套;
  • 在字典里,不能再有序列操作,虽然字典在某些方面与列表类似,但不要把列表套在字典上

 (1) 基本操作

   代码

    >>> table = {'abc':1, 'def':2, 'ghi':3}
    >>> table['abc']
    1
    >>> len(table)
    3
    >>> table.keys()
    ['abc', 'ghi', 'def']
    >>> table.values()
    [1, 3, 2]
    >>> table.has_key('def')
    True
    >>> table.items()
    [('abc', 1), ('ghi', 3), ('def', 2)] 

 (2) 修改,删除,添加

   代码

    >>> table = {'abc':1, 'def':2, 'ghi':3}
    >>> table['ghi'] = ('g', 'h', 'i')
    >>> table
    {'abc': 1, 'ghi': ('g', 'h', 'i'), 'def': 2}
    >>> del table['abc']
    >>> table
    {'ghi': ('g', 'h', 'i'), 'def': 2}
    >>> table['xyz'] = ['x', 'y', 'z']
    >>> table
    {'xyz': ['x', 'y', 'z'], 'ghi': ('g', 'h', 'i'), 'def': 2}

 

      在这里需要来一句,对于字典的扩充,只需定义一个新的键值对即可,而对于列表,就只能用append方法或分片赋值。

 (3)对字典的遍历

  代码

    >>> table = {'abc':1, 'def':2, 'ghi':3}
    >>> for key in table.keys():
        print key, '\t', table[key]   

    abc     1
    ghi     3
    def     2

 

4 文件

   与C++的File类相比,Python的文件类要狭义一些

 (1) 文件写

   代码

    >>> myfile = open('myfile', 'w')
    >>> myfile.write('hello world\n')
    >>> myfile.close()   

 

     Python的一个open语句就打开了一个文件(当给定的文件不存在时,会自动建立一个新的文件)。open的第一个参数是文件名,第二个参数是操作模式,所谓操作模式就是你打开一个文件是用来干什么的,是读,还是写(当然操作模式不仅只有读和写)。还有一件事,操作完要记得关。

  (2) 文件读

   代码

    >>> myfile = open('myfile', 'r')
    >>> myfile.readlinereadline()
    'hello world\n'   
时间: 2024-09-20 09:10:36

Python基础 6 ---- Python 元组+列表+字典+文件的相关文章

Python基础(3)--列表和元组

Python包含6种内建序列:列表.元组.字符串.Unicode字符串.buffer对象.xrange对象 本篇主要讨论最常用的两种类型:列表.元组 本文地址:http://www.cnblogs.com/archimedes/p/python-list-tuple.html,转载请注明源地址. 列表和元组的主要区别在于,列表可以修改,元组则不能.一般情况下,在几乎所有的情况下列表都可以代替元组 例如:使用序列可以表示数据库中一个人的信息(姓名,年龄) >>> edward=['Edwa

python基础(一)列表与元组

元组定长且不可变names=("1","2","3") #注意是小括号 定义一个列表 names = [ "zhy" ,"zhj" ,"xsm" ,"sst"] 取下标的形式 print(names[0]) 取出批量 [start:end] 取出start 至 end位置之间的内容,不包括end位置的元素 半闭半开区间 [1:3] 从下标1 取到下标3 不包括下标3的

Python基础 7 ---- Python内置sort和sorted函数

 1 Python对数据的排序有两种方法,一种是容器内置的sort函数,另外一种利用sorted函数    2 对于sort函数我们不再进行讨论,只要研究一下sorted函数  3 sorted函数的原形sorted(data,cmp,key,reverse),返回一个list     data是要排序的数据     cmp是一个比较函数,接收两个参数,但是默认不使用即none     key是一个比较函数,接收一个参数,默认启用     reverse是要按照升序还是降序,默认不使用即none

Debian Linux下的Python学习——列表,元组和字典之列表

列表,元组和字典都是通过某种方式组织在一起的数据元素的集合,属于数据结构. 列表和元组的主要区别在于,列表可以修改,元组不可以修改,当序列不能修改的时候用元组比较适合. 列表和元组是通过编号来引用存储值 字典是通过名字来引用存储值 本篇先讲列表 1.列表   1.1 列表初始化    空列表:list_none=[]    固定长度的空列表初始化:list_none1=[None]*5   #长度为5的空列表,None是python的内建值,表示什么也没有      实例:          

Python中3种内建数据结构:列表、元组和字典_python

Python中有3种内建的数据结构:列表.元组和字典.参考简明Python教程 1. 列表 list是处理一组有序项目的数据结构,即你可以在一个列表中存储一个 序列 的项目.假想你有一个购物列表,上面记载着你要买的东西,你就容易理解列表了.只不过在你的购物表上,可能每样东西都独自占有一行,而在Python中,你在每个项目之间用逗号分割. 列表中的项目应该包括在方括号中,这样Python就知道你是在指明一个列表.一旦你创建了一个列表,你可以添加.删除或是搜索列表中的项目.由于你可以增加或删除项目,

Python探索记(14)——字符串、列表、元组、字典与运算符相关的操作

# @Time : 2017/7/7 21:06 # @Author : 原创作者:谷哥的小弟 # @Site : 博客地址:http://blog.csdn.net/lfdfhl # @DESC : 字符串.列表.元组.字典与运算符相关的操作 ''' 运算符 + 表示合并 试用范围:字符串.列表.元组 示例如下: ''' string1='人生苦短 ' string2='我用Python' string3=string1+string2 print('string3=',string3) li

Python中元组列表与字典学习笔记

引言 这篇文章介绍python中的三种组合数据类型,文章后半段会介绍如何在这些组合数据类型中使用"分片"取出数据. 文章目录 0×1.元组 在python中,元组使用中括号来创建,如果括号中仅包含一个元素,需要在元素末尾添加一个逗号(不添加逗号数据会被创建成字符串或数值数据类型),元组在创建后,不能添加删除其中的元素,其值是固定不变的,请看下面的实例: #创建三个元组,b元组仅包含一个字符串元素,所以末尾需要添加一个逗号,否则b将被创建为字符串对象,c元组是一个多维元组,包含了a和b元

Python字符串/元祖/列表/字典互转介绍

  #-*- coding:UTF-8 -*- #author:RXS002 #1.字典 dict = {'name':'Zara','age':7,'class':'First'} #字典转换为字符串,返回:<type 'str'> {'age':7,'name':'Zara','class':'First'} print (type(str(dict)),str(dict)) #字典可以转为元祖,返回:('age','name','class') print (tuple(dict) #字

python实现分析apache和nginx日志文件并输出访客ip列表的方法_python

本文实例讲述了python实现分析apache和nginx日志文件并输出访客ip列表的方法.分享给大家供大家参考.具体如下: 这里使用python分析apache和nginx日志文件输出访客ip列表 ips = {} fh = open("/var/log/nginx/access.log", "r").readlines() for line in fh: ip = line.split(" ")[0] if 6 < len(ip) &l