`

Python:数组、列表(list)、字典(dict)、字符串(string)常用基本操作小结

 
阅读更多
连接 list 与分割字符串http://woodpecker.org.cn/diveintopython/native_data_types/joining_lists.html
连接 list 与分割字符串
3.7.1. 字符串方法的历史注解
您有了一个形如 key=value 的 key-value 对 list,并且想将它们合成为单个字符串。为了将任意包含字符串的 list 连接成单个字符串,可以使用字符串对象的 join 方法。
下面是一个在 buildConnectionString 函数中连接 list 的例子:
   
return ";".join(["%s=%s" % (k, v) for k, v in params.items()])

在我们继续之前有一个有趣的地方。我一直在重复函数是对象,字符串是对象,每个东西都是对象的概念。您也许认为我的意思是说字符串值 是对象。但是不对,仔细地看一下这个例子,您将会看到字符串 ";" 本身就是一个对象,您在调用它的 join 方法。

总之,这里的 join 方法将 list 中的元素连接成单个字符串,每个元素用一个分号隔开。分隔符不必是一个分号;它甚至不必是单个字符。它可以是任何字符串。

小心
join 只能用于元素是字符串的 list;它不进行任何的强制类型转换。连接一个存在一个或多个非字符串元素的 list 将引发一个异常。
例 3.27. odbchelper.py 的输出结果
>>> params = {"server":"mpilgrim", "database":"master", "uid":"sa", "pwd":"secret"}
>>> ["%s=%s" % (k, v) for k, v in params.items()]
['server=mpilgrim', 'uid=sa', 'database=master', 'pwd=secret']
>>> ";".join(["%s=%s" % (k, v) for k, v in params.items()])
'server=mpilgrim;uid=sa;database=master;pwd=secret'

上面的字符串是从 odbchelper 函数返回的,被调用块打印出来,这样就给出了您开始阅读本章时令人感到吃惊的输出结果。

您可能在想是否存在一个适当的方法来将字符串分割成一个 list。当然有,它叫做 split。

例 3.28. 分割字符串
>>> li = ['server=mpilgrim', 'uid=sa', 'database=master', 'pwd=secret']
>>> s = ";".join(li)
>>> s
'server=mpilgrim;uid=sa;database=master;pwd=secret'
>>> s.split(";")    1
['server=mpilgrim', 'uid=sa', 'database=master', 'pwd=secret']
>>> s.split(";", 1) 2
['server=mpilgrim', 'uid=sa;database=master;pwd=secret']

1 split 与 join 正好相反,它将一个字符串分割成多元素 list。注意,分隔符 (“;”) 被完全去掉了,它没有在返回的 list 中的任意元素中出现。
2 split 接受一个可选的第二个参数,它是要分割的次数。(“哦,可选参数……”,您将会在下一章中学会如何在您自己的函数中使用它。)
提示
anystring.split(delimiter, 1) 是一个有用的技术,在您想要搜索一个子串,然后分别处理字符前半部分 (即 list 中第一个元素) 和后半部分 (即 list 中第二个元素) 时,使用这个技术。


Python:数组、队列及堆栈的使用(list用法)
http://www.17jo.com/program/python/base/ListUse.html
Python编程中数组、队列及堆栈用于保存一组数据或对象的序列,元素可以是各种类型混合在一起,定义格式为[元素,元素,……,元素],用变量[位置]即可取出相应的元素,其中“位置”是从零开始计算。

数组表示一组序列集,元素可以在相应的位置存取。

# 例1:使用数组
array = [1,2,3,'hello',5]	# 定义五个元素的数组
print array[0]		# 输出位置0元素
>> 1
pos = 3
print array[pos]		# 输出位置3元素
>> hello

队列是一组以排队的形式先进先出的序列集,定义方法和数组是一致的,使用的函数也均可在数组或堆栈中使用。

# 例2:使用队列
alist = [1,2,3,4]		# 建立队列
alist.append[5] 		# 队尾添加元素5
alist.append['hello']	# 添加元素hello
print len(alist)		# 输出队列alist的长度
>> 6
alist.pop(0)		# 弹出首元素 1
alist.remove('hello')	# 移除元素'hello'
alist.insert(0,'Python')	# 在位置0插入元素'Python'
print alist.index('Python')	# 获得元素'Python'所在的位置
>> 0
alist.sort() 		# 将alist顺序排序
alist.sort(None,None,True) # 将alist倒序排序
alist.reverse()		# 将alist翻转
print alist
>> [2,3,4,5,'Python']
blist = [6,7,8]
alist.extend(blist) 	# 扩展队列alist
print alist
>> 2,3,4,5,'Python',6,7,8	# 输出结果

堆栈是一组指定义方式与定义数组队列一致。

# 例3:使用堆栈
alist = [2,2,3,4,5]	# 建立堆栈
alist.count(2)		# 统计2的个数
>> 2
alist.append[6] 		# 压入元素6
alist.pop()		# 弹出元素6


Python 列表(list)、字典(dict)、字符串(string)常用基本操作小结
http://blog.csdn.net/business122/article/details/7536991
创建列表
sample_list = ['a',1,('a','b')]

Python 列表操作
sample_list = ['a','b',0,1,3]

得到列表中的某一个值
value_start = sample_list[0]
end_value = sample_list[-1]

删除列表的第一个值
del sample_list[0]

在列表中插入一个值
sample_list[0:0] = ['sample value']

得到列表的长度
list_length = len(sample_list)

列表遍历
for element in sample_list:
    print 'element' 
    
Python 列表高级操作/技巧

产生一个数值递增列表
num_inc_list = range(30)
#will return a list [0,1,2,...,29]

用某个固定值初始化列表
initial_value = 0
list_length = 5
sample_list = [ initial_value for i in range(10)]
sample_list = [initial_value]*list_length
# sample_list ==[0,0,0,0,0]


附:python内置类型
1、list:列表(即动态数组,C++标准库的vector,但可含不同类型的元素于一个list中)
a = ["I","you","he","she"]      #元素可为任何类型。

下标:按下标读写,就当作数组处理
以0开始,有负下标的使用
0第一个元素,-1最后一个元素,
-len第一个元素,len-1最后一个元素
取list的元素数量                
len(list)   #list的长度。实际该方法是调用了此对象的__len__(self)方法。 

创建连续的list
L = range(1,5)      #即 L=[1,2,3,4],不含最后一个元素
L = range(1, 10, 2) #即 L=[1, 3, 5, 7, 9]

list的方法
L.append(var)   #追加元素
L.insert(index,var)
L.pop(var)      #返回最后一个元素,并从list中删除之
L.remove(var)   #删除第一次出现的该元素
L.count(var)    #该元素在列表中出现的个数
L.index(var)    #该元素的位置,无则抛异常 
L.extend(list)  #追加list,即合并list到L上
L.sort()        #排序
L.reverse()     #倒序
list 操作符:,+,*,关键字del
a[1:]       #片段操作符,用于子list的提取
[1,2]+[3,4] #为[1,2,3,4]。同extend()
[2]*4       #为[2,2,2,2]
del L[1]    #删除指定下标的元素
del L[1:3]  #删除指定下标范围的元素
list的复制
L1 = L      #L1为L的别名,用C来说就是指针地址相同,对L1操作即对L操作。函数参数就是这样传递的
L1 = L[:]   #L1为L的克隆,即另一个拷贝。
        
list comprehension
   [ <expr1> for k in L if <expr2> ]
                
2、dictionary: 字典(即C++标准库的map)
dict = {'ob1':'computer', 'ob2':'mouse', 'ob3':'printer'}
每一个元素是pair,包含key、value两部分。key是Integer或string类型,value 是任意类型。
键是唯一的,字典只认最后一个赋的键值。

dictionary的方法
D.get(key, 0)       #同dict[key],多了个没有则返回缺省值,0。[]没有则抛异常
D.has_key(key)      #有该键返回TRUE,否则FALSE
D.keys()            #返回字典键的列表
D.values()          #以列表的形式返回字典中的值,返回值的列表中可包含重复元素
D.items()           #将所有的字典项以列表方式返回,这些列表中的每一项都来自于(键,值),但是项在返回时并没有特殊的顺序         

D.update(dict2)     #增加合并字典
D.popitem()         #得到一个pair,并从字典中删除它。已空则抛异常
D.clear()           #清空字典,同del dict
D.copy()            #拷贝字典
D.cmp(dict1,dict2)  #比较字典,(优先级为元素个数、键大小、键值大小)
                    #第一个大返回1,小返回-1,一样返回0
            
dictionary的复制
dict1 = dict        #别名
dict2=dict.copy()   #克隆,即另一个拷贝。

3、tuple:元组(即常量数组)
tuple = ('a', 'b', 'c', 'd', 'e')
可以用list的 [],:操作符提取元素。就是不能直接修改元素。

4、string:     字符串(即不能修改的字符list)
str = "Hello My friend"
字符串是一个整体。如果你想直接修改字符串的某一部分,是不可能的。但我们能够读出字符串的某一部分。
子字符串的提取
str[:6]
字符串包含判断操作符:in,not in
"He" in str
"she" not in str

string模块,还提供了很多方法,如
S.find(substring, [start [,end]]) #可指范围查找子串,返回索引值,否则返回-1
S.rfind(substring,[start [,end]]) #反向查找
S.index(substring,[start [,end]]) #同find,只是找不到产生ValueError异常
S.rindex(substring,[start [,end]])#同上反向查找
S.count(substring,[start [,end]]) #返回找到子串的个数

S.lowercase()
S.capitalize()      #首字母大写
S.lower()           #转小写
S.upper()           #转大写
S.swapcase()        #大小写互换

S.split(str, ' ')   #将string转list,以空格切分
S.join(list, ' ')   #将list转string,以空格连接

处理字符串的内置函数
len(str)                #串长度
cmp("my friend", str)   #字符串比较。第一个大,返回1
max('abcxyz')           #寻找字符串中最大的字符
min('abcxyz')           #寻找字符串中最小的字符

string的转换
            
float(str) #变成浮点数,float("1e-1")  结果为0.1
int(str)        #变成整型,  int("12")  结果为12
int(str,base)   #变成base进制整型数,int("11",2) 结果为2
long(str)       #变成长整型,
long(str,base)  #变成base进制长整型,

字符串的格式化(注意其转义字符,大多如C语言的,略)
str_format % (参数列表) #参数列表是以tuple的形式定义的,即不可运行中改变
>>>print ""%s's height is %dcm" % ("My brother", 180)
          #结果显示为 My brother's height is 180cm

。。。。。。。。。。。。。。。。。。

list 和 tuple 的相互转化

tuple(ls) 
list(ls)
分享到:
评论

相关推荐

    Python列表(list)、字典(dict)、字符串(string)基本操作小结

    Python 列表操作 复制代码 代码如下: sample_list = [‘a’,’b’,0,1,3] 得到列表中的某一个值 复制代码 代码如下: value_start = sample_list[0] end_value = sample_list[-1] 删除列表的第一个值 复制代码 代码...

    172460683333#123#Python 列表(list)、字典(dict)、字符串(string)常用操作1

    1、list:列表(即动态数组,C++标准库的vector,但可含不同类型的元素于一个list中) 3、tuple:元组(即常量数组) 4、string: 字符

    2019千峰Python超详细入门教程(百度云盘分享).docx

    │ │ 1、String(字符串).py │ │ 2、String的内置函数.py │ │ 3、布尔值和空值.py │ │ 4、变量的类型问题.py │ │ │ └─video │ 千锋Python教程:17.运算符&字符串1.mp4 │ 千锋Python教程:18.运算符&...

    python字符串对其居中显示的方法

    本文实例讲述了python字符串对其居中显示的方法。分享给大家供大家参考。具体如下: 下面的代码可以让字符串居中,左对齐和右对齐,字符串长度设置... 您可能感兴趣的文章:Python列表(list)、字典(dict)、字符串(string

    Python数据类型详解(一)字符串

     字典:dict 注:所有的数据类型都存在想对应的类列里 二.字符串所有数据类型: 基本操作: 索引,切片,追加,删除,长度,切片,循环,包含 class str(object): str(object='') -&gt; str str(bytes_or_...

    python实现提取str字符串/json中多级目录下的某个值

    思路就是:字符串是个json格式(或转为json格式),然后str转为字典dict,然后循环遍历按照key来取值。 你的data是个字典 然后item_list是data的Key ,item_list是个数组,这个里面的数组中的每个元素都是一个字典。...

    python模块

    所有的这些模块提供了一个对象实现了基于字符串的持久化的字典,他与字典dict非常相似,但是他的keys和values都必须是字符串。 * shelve:shelve模块使用特殊的“shelf”对象来支持持久化对象。这个对象的行为与dict...

    搞定这套Python爬虫面试题(面试会so easy)

    Python 有 6 种内置的数据类型,其中不可变数据类型是Number(数字), String(字符串), Tuple(元组),可变数据类型是 List(列表),Dict(字典),Set(集合)。 3、列表和元组的区别 列表和元组都是可迭代对象,能够对其...

    Python各种数据类型常用操作

    数值转字符串—字符串转元组—字符串转列表—字符串转字典 注意 数值(int,float) 类型强制转换 字符串(string) 切片 遍历方式 元组(tuple) 字符串创造元组 元组的元素不可变性,用的不多,暂时想到只有这个 ...

    python讲稿1(list,tuple,dict)

    可变数据类型:list(列表)、dict(字典)、set(集合,不常用) 不可变数据类型:数值类型(int、float、bool)、string(字符串)、tuple(元组) 1. 基本类型 counter = 100 # 赋值整型变量 miles = 1000.0 # ...

    Python数据类型(史上最全~不谈)

    字符串(String)特征字符串常用操作指令3.元组(Tuple)特征元组的创建常用操作二、可变数据类型1.列表(List)特征增删改:修改指定位置元素查2.字典(Dict)特征创建字典增删改查3.集合(Set)特征创建集合增:相同元素不能...

    Python中函数eval和ast.literal_eval的区别详解

    众所周知在Python中,如果要将字符串型的list,tuple,dict转变成原有的类型呢? 这个时候你自然会想到eval. eval函数在python中做数据类型的转换还是很有用的。它的作用就是把数据还原成它本身或者是能够转化成的数据...

    lrucacheleetcode-Leetcode:推

    最长公共前缀字符串切片ss[6:11] ####20。 Python 的有效括号: list.append是从最后list.pop从第一个开始流行list.insert(index,item) top_element = stack.pop() if stack else '#' 此代码不需要检查堆栈是否为空...

Global site tag (gtag.js) - Google Analytics