序列

可变(指:支持原位改变)分为:list列表和可变序列通用操作

#  列表存在“引用”

Python 有几个 复合 数据类型,用于表示其它的值。最通用的是 list (列表) ,它可以写作中括号之间的一列逗号分隔的值。列表的元素不必是同一类型:

(1)  List列表

1.可包含任意对象的有序集合

>>> score = 90

>>> scores = [99,32,65,90.7,”abc”]    #可以包含整数和浮点数以及字符串

>>> type(scores)

<class 'list'>

>>> scores

[99, 32, 65, 90.7.”abc”]

2.通过下标索引(位置偏移)访问元素

>>> x = [90,99,34.5,"tom"]

>>> x[0]      #访问单一元素

90

>>> x[3]

'tom'

>>> x[-1]

'tom'

就像字符串(以及其它所有内建的 序列 类型)一样,列表可以被索引和切片:

>>>x[0:2] #  也可以访问一定范围的元素,也叫切片

[90, 99]

x = ([90,99,34.5,"tom"])
print(x[0],x[2]) # 打印列表元素
90 34.5
x = ([90,99,34.5,"tom"])
print(x[-3:-1])    重左到右取值,故左不故右
print(x[-3:])      需要取最后的值直接冒号
[99, 34.5]   
[99, 34.5, 'tom']
# 跳着切片
name = ["tom","jerry","mike","peter","john"]
print(name[::2])
['tom', 'mike', 'john']

3.可变长度,异质,可任意嵌套(嵌套指:列表本身可以包含列表)

不像 不可变的 字符串,列表是 可变的,它允许修改元素:

>>> x =[90,99,34.5,"tom"]

>>> x.enu(79)      # append是方法不是函数

>>> x

[90, 99, 34.5, 'tom', 79]

>>> y = [90, 99, [34.5, 'tom'],79]     #可任意嵌套

>>> y

[90, 99, [34.5,'tom'], 79]

4.支持原位改变     #  列表本身是可以改变的

>>> x = [90, 99, [34.5,'tom'], 79]

>>> x[1] = 66

>>> x

[90, 66, [34.5, 'tom'], 79]

x.insert(1,277)    # 或者用insert,通用操作方法
print(x)
[90, 277, 99, 34.5, 'tom']

也可以对切片赋值,此操作可以改变列表的尺寸,或清空它:

>>> letters = ['a','b','c','d','e','f','g']
>>> letters
['a', 'b', 'c', 'd', 'e', 'f', 'g']
>>> # replace some values
>>> letters[2:5] = ['C','D','E']
>>> letters
['a', 'b', 'C', 'D', 'E', 'f', 'g']
>>> # now remove them
>>> letters[2:5] = []
>>> letters
['a', 'b', 'f', 'g']
>>> # clear the list by replacing all the elements with an empty list
>>> letters[:] = []
>>> letters
[]

内置函数 len() 同样适用于列表:

>>> letters = ['a','b','c','d']
>>> len(letters)
4

允许嵌套列表(创建一个包含其它列表的列表),例如:

>>> a= ['a','b','c']
>>> n= [1,2,3]
>>> x= [a,n]
>>> x
[['a', 'b', 'c'], [1, 2, 3]]
>>> x[0]
['a', 'b', 'c']
>>> x[0][1]
'b'

 

5.对象”引用”数组

X = [1,2,3]     #  存储原理图:  0指向1

>>> x[0] = "tom"

>>> x

['tom', 2, 3]    #存储原理图:0 重新指向“tom”

>>> z = 2

>>> x[1] == z        

True

>>> x[1] is z

True             # 256以下的数都会缓存一个地方 原理如下图;

 

 6.常用操作  排序

   l.sort    # 从小到大排序

 >>>scores = [100,43,89,98,67,76.9]

>>> scores

[100, 43, 89, 98, 67, 76.9]

>>> scores.sort()   # 不直接返回参数

>>> scores         # 需要再次调用

[43, 67, 76.9, 89,98, 100]

 

>>> a =["tom","jerry","mike","peter","john"]

>>> a.sort()     # 按字母顺序排序

>>> a

['jerry', 'john', 'mike', 'peter', 'tom']

  l.reverse()   # 从大到小排序

 >>>scores.reverse()

>>> scores

[100, 98, 89, 76.9, 67, 43]

    

>>> a = ['jerry', 'john', 'mike','peter', 'tom']

>>> a.sort(key=lambda x:x[-1])  

>>> a  # lambda是一个函数,[-1]指按照名字最后一个字母排序

['mike', 'tom', 'john', 'peter', 'jerry']

  sorted(t)     # 是一个全局函数,不需要调用模块或包

不依附某个对象,需要把参数传给t

>>> scores = [23,34,56.6,100,99]

>>> sorted(scores)   # 直接返回参数

[23, 34, 56.6, 99, 100]

dict= {6:4,2:3,-2:9}
print(sorted(dict))  # 键值大小排序
print(sorted(dict.items())) # 按键值大小排序字典

print(sorted(dict.items(),key = lambda x:x[1])) # 按值大小排序字典

# x是元素,x[1]是元素里面的[1]的位置

[-2, 2, 6]

[(-2, 9), (2, 3),(6, 4)]

[(2, 3), (6, 4),(-2, 9)]

num = [2,3,45,6]
w = [
"a","b","c","d"]
for i in
zip(w,num)
   
print(i)

('a', 2)

('b', 3)

('c', 45)

('d', 6)

 

 

 

>>> a = ['mike', 'tom', 'john','peter', 'jerry']

>>> sorted(a,key=lambda n:n[1])    # 按照名字第二个字母排序

['peter', 'jerry', 'mike', 'tom', 'john']

 

(2)  可变序列通用操作

   1. 改变某个元素值 s[i] = x

          >>> s = list(range(1,11))

>>> s

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

>>> s[0] = 99

>>> s

[99, 2, 3, 4, 5, 6, 7, 8, 9, 10]

 

2.改变特定范围内元素值

 s[i:j] = t

>>> s[:3] = [66,77,88]

>>> s

[66, 77, 88, 4, 5, 6, 7, 8, 9, 10]

>>> s[:3] = [66,77,88,99,00]    # 赋值大于设定,将会挤压后面元素

>>> s        

[66, 77, 88, 99, 0, 4, 5, 6, 7, 8, 9, 10]

>>> s[:5] = [666]

>>> s

[666, 4, 5, 6, 7, 8, 9, 10]

 

s[i:j:k]= t

>>> b =list(range(1,11))

>>>b

[1,2, 3, 4, 5, 6, 7, 8, 9, 10]

>>> b[::2] = [99,99,99,99,99]  #需要给定赋值的数量,以及相匹配元素的值

>>> b

[99, 2, 99, 4, 99, 6, 99, 8, 99, 10]

 

3.删除元素

  dels[i]     # 通过索引来删除,不需要知道具体的值

>>> b = [99, 2, 99, 4, 99, 6, 99,8, 99, 10]

>>> del b[0]  # 此方法还可以删除变量

>>> b

[2, 99, 4, 99, 6, 99, 8, 99, 10]

 del s[i:j]

>>> del b[0:3]

>>> b

[99, 6, 99, 8, 99,10]

 #或者删除元素的方法

>>> b[0:3] = [ ]  # 相当于给一个空的序列

>>> b

[99, 6, 99, 8, 99, 10]

dels[i:j:k]

>>> del b[::3]

>>> b

[6, 99, 99, 10]

s.remove(x)  s 指序列  x要删除的元素内容

>>> c = list(range(1,11))     

>>> c

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

>>> c.remove(2)         # 指定删除元素

>>> c

[1, 3, 4, 5, 6, 7, 8, 9, 10]

>>> z = [2,3,4,5,6,7,2,3,2]

>>> z.remove(3)         # 序列出现多个元素,但删除第一个

>>> z

[2, 4, 5, 6, 7, 2, 3, 2]

s.clear()清空序列

>>> z = [2,3,4,5,6,7,2,3,2]

>>> z.clear()

>>> z

[ ]

 

4.追加元素   在列表后面追加

  s.append(x)

>>> z = [ ]

>>> z.append(5)

>>> z

[5]

>>> z.append(7)

>>> z

[5, 7]

>>> z.append([8,9])  # s.append(x) 只能把括号里面的内容当成一个值

>>> z

[5, 7, [8, 9]]   # s.append(x) 只能把括号里面的内容当成一个值,哪怕是一个序列,如果想要并列加进去,得用扩展元素

 

5.扩展序列

  s.extend(x)     # 追加的不是一个整体,而是独立的元素

>>> z = [5, 7, [8, 9]]

>>> z.extend([10,11,12])

>>> z

[5, 7, [8, 9], 10, 11, 12]

 

 

 

6.插入元素 s.insert(i,x)    s指列表  i指所追加位置  x指元素

>>> z = [5, 7, [8, 9], 10, 11, 12]

>>> z.insert(0,99)

>>> z

[99, 5, 7, [8, 9], 10, 11, 12]

>>> z.insert(3,10)

>>> z

[99, 5, 7, 10, [8, 9], 10, 11, 12]

7.检索并删除特定元素 s.pop([i])  # i不指定下标,默认删除最后一个

>>> a = [1, 2, 100, 3, 4, 5, 6, 7,8, 9, 10]

>>> a.pop()                      #,输入下标等于del s[i]用法

10

>>> a

[1, 2, 100, 3, 4, 5, 6, 7, 8, 9]

>>> a.pop()

9

>>> a

[1, 2, 100, 3, 4, 5, 6, 7, 8]

 

>>> b = list(range(1,11))

>>> a

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

>>> b.extend([23,[100,10],101])

>>>b

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 23, [100,10], 101]

>>> result = b.pop()

>>> b

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 23, [100,10]]

>>> result              # 检索被删除的元素

101

>>> a.pop(1)            #  删除所在的元素

2

>>> a

[1, 3, 4, 5, 6, 7, 8, 9, 10, 23, [100, 10]]

 

8.反转序列s.reverse()

>>> a.reverse()

>>> a

 [[100,10], 23, 10, 9, 8, 7, 6, 5, 4, 3, 1]

>>> y = a.reverse()

>>> y   #  y是空的,证明a.reverse()只会影响a原来的变量本身

>>> a

[1, 3, 4, 5, 6, 7, 8, 9, 10, 23, [100, 10]]

 

9.复制序列     s[:]  或者  s.copy()

s[:]

>>> s = list(range(11))

>>> s

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

>>> z = s

>>> z

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

>>> z[1] = 99

>>> z

[0, 99, 2, 3, 4, 5, 6, 7, 8, 9, 10]

>>> s     #  z和s 关联了一个对象,其实是共享引用了

[0, 99, 2, 3, 4, 5, 6, 7, 8, 9, 10]     

  

 

或者调用copy进行深度copy

import copy
name = ["tom","jerry","mike","peter","john"]
names = copy.deepcopy(name)
names[0] = "copy"
print(name,names)
['tom', 'jerry', 'mike', 'peter', 'john'] 
['copy', 'jerry', 'mike', 'peter', 'john']

 

 

 

s.copy()   # 浅copy,不调用copy,只复制一层

>>> a = list(range(11))

>>> a

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

>>> x = a.copy()  

>>> x

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

>>> x[0] =99

>>> x

[99, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

>>> a

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

#  s.copy()的使用是复制了一个引用 存储的值是一样的,除非超过256

#   当>>> x[0] = 99  的时候,原理如下图

 

类似# 只复制值一次值,工资举例

a = ["fengsen",["salary",50.00]]
b = a[:]
a
['fengsen', ['salary', 50.0]]
b
['fengsen', ['salary', 50.0]]
b[0] = "王"    # 第一次一个列表值改变,不影响另一个列表
b
['王', ['salary', 50.0]]
a
['fengsen', ['salary', 50.0]]
a[1][1] = 100.00 # 第二次一个列表值改变,影响另一个列表,这就是浅copy
a
['fengsen', ['salary', 100.0]]
b
['王', ['salary', 100.0]]
 

 

 

 

 

 

 

 

 

不可变

(1)  tuple 元组(只读列表)

a = [ ]  #  方括号代表list

b = ( )  #  元括号代表元组

1.     可包含任意对象的有序集合

>>> c = ("tom")

>>> c

'tom'

>>> type(c)

<class 'str'>  #  应该是tuple元组,为什么成了字串str了

>>> c = ("tom",)   #应该做结尾加,逗号结束,告知这是元组

>>> c

('tom',)

>>> type(c)

<class 'tuple'>

  # 如果想生成tuple序列,可以以下操作

>>> scores = tuple(range(1,9))    # 用tuple生成,不用list

>>> scores

(1, 2, 3, 4, 5, 6, 7, 8)

>>> type(scores)

<class 'tuple'>

2.    通过下标索引(位置偏移)访问元素

>>> t = (1,2,3,4,5,[33,33.11],100)

>>> t[5]

[33, 33.11]

>>> t[5][1]     # 嵌套可以用这种方式访问

33.11

>>> t[0:3]      # 访问元素和list列表方式一样

(1, 2, 3)

 

3.     固定长度,异质,可任意嵌套   # 异质表示可以包含任意对象,如:数      字,浮点,嵌套,字母等

>>> t = (1, 2, 3, 4, 5,[33, 33.11], 100)

>>> t.append(5)   #  体现了tuple 不支持原位改变

Traceback (most recent call last):

 File "<pyshell#9>", line 1, in <module>

   t.append(5)     

AttributeError: 'tuple' object hasno attribute 'append'

4.     对象引用数组

>>>a = (12,34,45,"tom",32.99)

>>>a1 = (100,)

>>> a3 = a + a1           #  只是引用相加后过的值,想要相加的值,可以用 a4 = a3  的方式给a4 赋值

>>>a3

(12, 34,45, 'tom', 32.99, 100)

>>>a1          # a1 和 a2 的值不变,体现了tuple不支持原位改变

(100,)

>>>a

(12, 34,45, 'tom', 32.99)

 

>>>a = 3

>>>b = 4

>>>a,b = 3,4       # 本质上是tuple元组

>>>a

3

>>>b

4

>>>b,a = 3,4      #   交换数值

>>>a

4

>>>b

3

>>> 

  

 

(3)  文本序列str字符串

1.     ‘字符串   “字符串”   “””三字符串”””

   “””三字符串”””

  s = """

您好wangxueya

冯森爱你哟

都很爱你哟

"""

 >>>s       

'\n您好wangxueya\n冯森爱你哟\n都很爱你哟\n'

>>> print(s)

您好wangxueya

冯森爱你哟

都很爱你哟

 

 2.转义符    

\n 换行    

>>> z = "优教通\nwww.yjt361.com"       # \n表示换行

>>> print(z) 

优教通

www.yjt361.com

  \t tab     

>>> a = "有交通\twww.yjt361.com"

>>> print(a)

有交通    www.yjt361.com #  空4格,一个tab键

  \\  \    #  解决 \ 不能在文件路径中使用

 >>>path = "c:\\abc\\vbn\\tag.txt"

>>> print(path)

c:\abc\vbn\tag.txt

# 或者用r表示一个声明,声明后面的字符串忽略掉转义符

>>>path = r"c:\abc\vbn\tag.txt"

>>>print(path)

c:\abc\vbn\tag.txt

>>> print('C:\some\name')  # here \n means newline!
C:\some
ame
>>> print(r'C:\some\name')  # note the r before the quote
C:\some\name

 

 

\a 响铃   \b退格   \ r回车  \’   \’’   \?? \0空字符 \ooo八进制

\xhh十六进制

    \

>>>world = "what\'s your name"   #\声明后一位是字符串

>>>print(world)

what'syour name

>>>type(world)

<class'str'>

字符串可以由 + 操作符连接(粘到一起),可以由 * 表示重复:

>>> # 3 times 'un', followed by 'ium'
>>> 3 * 'un' + 'ium'
'unununium'

相邻的两个字符串文本自动连接在一起。:

>>> 'Py''thon'
'Python'

它只用于两个字符串文本,不能用于字符串表达式:

>>> prefix = 'Py'
>>> prefix'thon'  # can't concatenate a variable and a string literal
  ...
SyntaxError: invalid syntax
>>> ('un' * 3)'ium'
  ...
SyntaxError: invalid syntax

如果你想连接多个变量或者连接一个变量和一个字符串文本,使用 +:

>>> prefix + 'thon'
'Python'

这个功能在你想切分很长的字符串的时候特别有用:

>>> text = ('Put several strings within parentheses '
            'to have them joined together.')
>>> text
'Put several strings within parentheses to have them joined together.'

字符串也可以被截取(检索)。类似于 C ,字符串的第一个字符索引为 0 Python没有单独的字符类型;一个字符就是一个简单的长度为1的字符串。:

>>> word = 'Python'
>>> word[0]  # character in position 0
'P'
>>> word[5]  # character in position 5
'n'

索引也可以是负数,这将导致从右边开始计算。例如:

>>> word[-1]  # last character
'n'
>>> word[-2]  # second-last character
'o'
>>> word[-6]
'P'

请注意 -0 实际上就是 0,所以它不会导致从右边开始计算。

除了索引,还支持 切片。索引用于获得单个字符,切片 让你获得一个子字符串:

>>> word[0:2]  # characters from position 0 (included) to 2 (excluded)
'Py'
>>> word[2:5]  # characters from position 2 (included) to 5 (excluded)
'tho'

注意,包含起始的字符,不包含末尾的字符。这使得 s[:i] + s[i:] 永远等于 s:

>>> word[:2] + word[2:]
'Python'
>>> word[:4] + word[4:]
'Python'

切片的索引有非常有用的默认值;省略的第一个索引默认为零,省略的第二个索引默认为切片的字符串的大小。:

>>> word[:2]  # character from the beginning to position 2 (excluded)
'Py'
>>> word[4:]  # characters from position 4 (included) to the end
'on'
>>> word[-2:]# characters from the second-last (included) to the end
'on'

有个办法可以很容易地记住切片的工作方式:切片时的索引是在两个字符 之间 。左边第一个字符的索引为 0,而长度为 n 的字符串其最后一个字符的右界索引为 n。例如:

 +---+---+---+---+---+---+
 | P | y | t | h | o | n |
 +---+---+---+---+---+---+
0   1   2   3   4   5   6
-6  -5  -4  -3  -2  -1

文本中的第一行数字给出字符串中的索引点 0…6。第二行给出相应的负索引。切片是从 i  j 两个数值标示的边界之间的所有字符。

对于非负索引,如果上下都在边界内,切片长度就是两个索引之差。例如,word[1:3]  2

试图使用太大的索引会导致错误:

>>> word[42]  # the word only has 6 characters
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: string index out of range

Python 能够优雅地处理那些没有意义的切片索引:一个过大的索引值(即下标值大于字符串实际长度)将被字符串实际长度所代替,当上边界比下边界大时(即切片左值大于右值)就返回空字符串:

>>> word[4:42]
'on'
>>> word[42:]
''

Python字符串不可以被更改它们是 不可变的 。因此,赋值给字符串索引的位置会导致错误:

>>> word[0] = 'J'
  ...
TypeError: 'str' object does not support item assignment
>>> word[2:] = 'py'
  ...
TypeError: 'str' object does not support item assignment

如果你需要一个不同的字符串,你应该创建一个新的:

>>> 'J' + word[1:]
'Jython'
>>> word[:2] + 'py'
'Pypy'

内置函数 len() 返回字符串长度:

>>> s = 'supercalifragilisticexpialidocious'
>>> len(s)
34

 

 

文本序列str常用操作

  1.str(obj)   # str是全局函数,不是方法

>>>int("33") +5           #  强制转换

38

>>>"33"  + str(55)

'3355'

>>> 

2.     str.replace(old,new[,cound])

>>>s = "a"*5

>>>s

'aaaaa'

>>>s.replace("a","b")        

'bbbbb'

>>>s

'aaaaa'            # 所以只是替换输出数值  

>>>s = s.replace("a","b")        # 可以变通重新赋值

>>>s

'bbbbb'

 

>>>s.replace("b","c",2)      #  替换两个字符

'ccbbb'

>>>s                      #   s本身还是不可变

'bbbbb'

 

>>>url = www.yjt361.com

>>>url.replace("com","cn")

'www.yjt361.cn'

 

3.     str.capitalize()     # 字符第一个字母大写

 >>> url = "www.yjt361.com"

>>>url.capitalize()

'Www.yjt361.com'

        

4.     str.upper()       # 字符字母全部大写

>>>url.upper()

'WWW.YJT361.COM'

 

5.     str.lower()      #  字符字母全部小写

>>>url.lower()

'www.yjt361.com'

 

6.     str.startswith(“str”)   # 判断字符开头字符

>>>url.startswith("w")

True

>>>url.startswith("www.")

True

>>>url.startswith("wabc")

False

 

7.str.endswith(“str”)    #  判断字符结束字

>>>url.endswith("com")

True

>>>url.endswith("cn")

False

 

8.     str.isnumeric()       # 判断当前字符是不是数字

>>>"321".isnumeric()

True

 

9.     str.isalpha()          # 判断当前字符是不是字母

>>>"321".isalpha()

False

        

10.  str.split()           # 按谋元素进行字符拆分

      >>>url = "www.yjt361.com"

>>> url.split(".")

['www', 'yjt361', 'com']

          

11.  str.join()          # 按谋元素进行字符连接起来

>>> url = 'www', 'yjt361', 'com'

>>> ":".join(url)

'www:yjt361:com'

 

12.  str.format()       # 用来格式化字符串

>>>name = "tom"

>>>age = 20

>>>job = "dev"

>>>print("姓名" +name + "年龄" + str(age) + "工作" +job)

姓名tom年龄20工作dev     # 这样拼接比较麻烦

>>>"姓名:{0},年龄:{1},工作:{2}".format(name,age,job)

'姓名:tom,年龄:20,工作:dev'   # 用format拼接简单

>>>"姓名:{0},年龄:{1},工作:{2},虚岁:{1}".format(name,age,job)

'姓名:tom,年龄:20,工作:dev,虚岁:20'  # 可以多次使用元素

 

>>>"{0} = {1}".format("王学亚","23岁")

'王学亚 = 23岁'

>>>"{0:10} = {1:10}".format("王学亚","23岁")  

'王学亚        = 23岁    # 10代表空10个字符给元素

>>>"{0:>10} = {1:<10}".format("王学亚","23岁")

'       王学亚 = 23岁      '# 指定对齐方式来呈现

 

>>>"{},{},{}".format(3.14159,3.14159,3.14159)

'3.14159,3.14159,3.14159'

>>>"{:f},{:.2f},{}".format(3.14159,3.14159,3.14159)

'3.141590,3.14,3.14159'     # 可以指定呈现浮点以及保留的小数点

 

>>>"{},{},{:06.2f}".format(3.14159,3.14159,3.14159)

'3.14159,3.14159,003.14'   # 指定保留浮点数两位,前面剩余用0补全,

 

"{:x},{:o},{:b}".format(230,230,230)  # 显示不同进制结果

'e6,346,11100110'

     #  以下是乘法口诀表

for x inrange(1,10):

  for y in range(1,x+1):

        print("{0} x {1} ={2}".format(x,y,x*y),end = " ")

  print('\n')

13.     s.center()   #

name = ("王,冯")
print(name.center(50,"-")) # 一共打印50个字符串,不够用-补齐

----------------------王,冯----------------------

14.  join()和os.path.join()

Python中有join()和os.path.join()两个函数,具体作用如下:
    join():    连接字符串数组。将字符串、元组、列表中的元素以指定的字符(分隔符)连接生成一个新的字符串
    os.path.join():  将多个路径组合后返回
join()函数

语法:  'sep'.join(seq)

参数说明
sep:分隔符。可以为空
seq:要连接的元素序列、字符串、元组、字典
上面的语法即:以sep作为分隔符,将seq所有的元素合并成一个新的字符串

返回值:返回一个以分隔符sep连接各个元素后生成的字符串

#列表

name = ["Tom","Jerry","Peter"]
print("--->".join(name))

Tom--->Jerry--->Peter

#字符串

name = "你好我的世界"
print("|".join(name))

你|好|我|的|世|界

# 元组

name =("100","200","10","00")
print("--".join(name))

100- -200- -10--00

os.path.join()函数

语法:  os.path.join(path1[,path2[,......]])

返回值:将多个路径组合后返回

注:第一个绝对路径之前的参数将被忽略

 
import os
print(os.path.join('/hello/','good/boy/','doiido'))

/hello/good/boy/doiido

15. strip()函数 介绍

函数原型

 

声明:s为字符串,rm为要删除的字符序列

 

s.strip(rm)        删除s字符串中开头、结尾处,位于 rm删除序列的字符

s.lstrip(rm)       删除s字符串中开头处,位于 rm删除序列的字符

s.rstrip(rm)      删除s字符串中结尾处,位于 rm删除序列的字符

注意:

 

1. 当rm为空时,默认删除空白符(包括'\n', '\r',  '\t',  ' ')

例如:

>>>a = '     123'
>>> a.strip()
'123'
>>> a='\t\tabc'
'abc'
>>> a = 'sdff\r\n'
>>> a.strip()
'sdff'

2.    这里的rm删除序列是只要边(开头或结尾)上的字符在删除序列内,就删除掉。

>>>a = '123abc'
>>> a.strip('21')
'3abc'   结果是一样的
>>> a.strip('12')
'3abc'

 

 

 

 

 

 

%s%d%f

%s 字符串

1.  string="hello"    

2.      

3.  #%s打印时结果是hello    

4.  print "string=%s" % string      # output: string=hello    

5.      

6.  #%2s意思是字符串长度为2,当原字符串的长度超过2时,按原长度打印,所以%2s的打印结果还是hello    

7.  print "string=%2s" % string     # output: string=hello    

8.      

9.  #%7s意思是字符串长度为7,当原字符串的长度小于7时,在原字符串左侧补空格,    

10. #所以%7s的打印结果是  hello    

11. print "string=%7s" % string     # output: string=  hello    

12.     

13. #%-7s意思是字符串长度为7,当原字符串的长度小于7时,在原字符串右侧补空格,    

14. #所以%-7s的打印结果是  hello    

15. print "string=%-7s!" % string     # output: string=hello  !    

16.     

17. #%.2s意思是截取字符串的前2个字符,所以%.2s的打印结果是he    

18. print "string=%.2s" % string    # output: string=he    

19.     

20. #%.7s意思是截取字符串的前7个字符,当原字符串长度小于7时,即是字符串本身,    

21. #所以%.7s的打印结果是hello    

22. print "string=%.7s" % string    # output: string=hello    

23.     

24. #%a.bs这种格式是上面两种格式的综合,首先根据小数点后面的数b截取字符串,    

25. #当截取的字符串长度小于a时,还需要在其左侧补空格    

26. print "string=%7.2s" % string   # output: string=     he    

27. print "string=%2.7s" % string   # output: string=hello    

28. print "string=%10.7s" % string  # output: string=     hello    

29.     

30. #还可以用%*.*s来表示精度,两个*的值分别在后面小括号的前两位数值指定    

31. print "string=%*.*s" % (7,2,string)      # output: string=     he    

%d 整型

1.  num=14    

2.      

3.  #%d打印时结果是14    

4.  print "num=%d" % num            # output: num=14    

5.      

6.  #%1d意思是打印结果为1位整数,当整数的位数超过1位时,按整数原值打印,所以%1d的打印结果还是14    

7.  print "num=%1d" % num           # output: num=14    

8.      

9.  #%3d意思是打印结果为3位整数,当整数的位数不够3位时,在整数左侧补空格,所以%3d的打印结果是 14    

10. print "num=%3d" % num           # output: num= 14    

11.     

12. #%-3d意思是打印结果为3位整数,当整数的位数不够3位时,在整数右侧补空格,所以%3d的打印结果是14_    

13. print "num=%-3d" % num          # output: num=14_    

14.     

15. #%05d意思是打印结果为5位整数,当整数的位数不够5位时,在整数左侧补0,所以%05d的打印结果是00014    

16. print "num=%05d" % num          # output: num=00014    

17.     

18. #%.3d小数点后面的3意思是打印结果为3位整数,    

19. #当整数的位数不够3位时,在整数左侧补0,所以%.3d的打印结果是014    

20. print "num=%.3d" % num          # output: num=014    

21.     

22. #%.0003d小数点后面的00033一样,都表示3,意思是打印结果为3位整数,    

23. #当整数的位数不够3位时,在整数左侧补0,所以%.3d的打印结果还是014    

24. print "num=%.0003d" % num       # output: num=014    

25.     

26. #%5.3d是两种补齐方式的综合,当整数的位数不够3时,先在左侧补0,还是不够5位时,再在左侧补空格,    

27. #规则就是补0优先,最终的长度选数值较大的那个,所以%5.3d的打印结果还是  014    

28. print "num=%5.3d" % num         # output: num=  014    

29.     

30. #%05.3d是两种补齐方式的综合,当整数的位数不够3时,先在左侧补0,还是不够5位时,    

31. #由于是05,再在左侧补0,最终的长度选数值较大的那个,所以%05.3d的打印结果还是00014    

32. print "num=%05.3d" % num        # output: num=00014    

33.     

34. #还可以用%*.*d来表示精度,两个*的值分别在后面小括号的前两位数值指定    

35. #如下,不过这种方式04就失去补0的功能,只能补空格,只有小数点后面的3才能补0    

36. print "num=%*.*d" % (04,3,num)  # output: num= 014 

%f 浮点型

1.  import math    

2.      

3.  #%a.bfa表示浮点数的打印长度,b表示浮点数小数点后面的精度    

4.      

5.  #只是%f时表示原值,默认是小数点后5位数    

6.  print "PI=%f" % math.pi             # output: PI=3.141593    

7.      

8.  #只是%9f时,表示打印长度9位数,小数点也占一位,不够左侧补空格    

9.  print "PI=%9f" % math.pi            # output: PI=_3.141593    

10.     

11. #只有.没有后面的数字时,表示去掉小数输出整数,03表示不够3位数左侧补0    

12. print "PI=%03.f" % math.pi          # output: PI=003    

13.     

14. #%6.3f表示小数点后面精确到3位,总长度6位数,包括小数点,不够左侧补空格    

15. print "PI=%6.3f" % math.pi          # output: PI=_3.142    

16.     

17. #%-6.3f表示小数点后面精确到3位,总长度6位数,包括小数点,不够右侧补空格    

18. print "PI=%-6.3f" % math.pi         # output: PI=3.142_    

19.     

20. #还可以用%*.*f来表示精度,两个*的值分别在后面小括号的前两位数值指定    

21. #如下,不过这种方式06就失去补0的功能,只能补空格    

22. print "PI=%*.*f" % (06,3,math.pi)   # output: PI=_3.142

% 是把后面的值赋给前面

name = ("王,冯")
print("myname is %s"% (name))

my name is 王,冯

 

% 2  可以用来判断 n 是否被 2 整除,检测奇,偶数

#!/usr/bin/python3

 

numbers =[11,33,55,39,55,75,37,21,23,41,13]

 

for num in numbers:

    if num%2==0:

        print('the listcontains an even number')

        break

else:

    print('the listdoesnot contain even number')

Python

当执行上述代码时,会产生以下结果 -

the list does not contain even number

 

 

可变list列表和不可变tuple元组的通用操作

>>>x = ("我爱学")

>>>x

'我爱学'

>>>x = list("我爱学")

>>>x

['我', '爱', '学']

>>>list(range(5))      # range和list是一个函数

[0, 1, 2,3, 4]

(1)   判断元素是否在序列之内

1.     xin s

>>> name =["tom","jerry","mike","peter","john"]

>>> scores = [44,55,78.7,60.7,77]

>>>"mike" in name        #  注意是要区分大小写

True

>>>"Mike" in name       

False

>>>60.7 in scores

True

>>>102 in scores

False

2.     xnot in s

>>>60.7 not in scores

False

>>>102 not in scores

True

 

(2)   连接序列

1.     S1+ s2

>>> name =["tom","jerry","mike","peter","john"]

>>> scores = [44,55,78.7,60.7,77]

>>> name + scores

['tom', 'jerry', 'mike', 'peter', 'john',44, 55, 78.7, 60.7, 77]

>>> name

['tom', 'jerry', 'mike', 'peter', 'john']       #name本身并没有改变

(3)   重复序列元素

1.     S* n   # s 表示序列   n表示重复的次数  *表示的乘号

>>> [3] * 4

[3, 3, 3, 3]

(4)下标获取元素

1.s[i]

>>> name =["tom","jerry","mike","peter","john"]

>>> scores =[44,55,78.7,60.7,77]

>>> name[2]

'mike'

>>> scores[3]

60.7

>>> name[-2]

'peter'

 

(5) 访问指定索引范围

1. s[i:j]

>>>name =["tom","jerry","mike","peter","john"]

>>>name[0:3]

['tom','jerry', 'mike']

 

(6) 按步长访问指定索引范围

 1. s[i:j:k]

 

(7) 获取序列长度

1. len(S)     # S 指序列    len 表示返回长度

>>>name =["tom","jerry","mike","peter","john"]

>>>len(name)

5

(8)   获取最小值       # 内容为课比较

1.     min(s)

>>> scores = [44,55,78.7,60.7,77]

>>> min(scores)

44

(9)   获取最大值       # 内容为课比较

1.     Max(s)

>>> max(scores)

78.7

 

(10)统计总和

1.Sum(s)

>>> sum(scores)      #  统计列表元素总和

315.4

 

(11)检索某个元素第一次出现位置下标  #  s.index(x) 是方法  不是函数

1. s.index(x)   s 是我们检索的序列   x是我们检索元素的值

 

>>>name=["tom","jerry","mike","peter","john"]

>>>name.index("mike")

2

name = ["tom","jerry","mike","peter","john"]
print(name[name.index("mike")])  # 打印元素,注意添加列表括号

 

>>>scores = [44,55,78.7,60.7,77]

>>>scores.index(60.7)

3

 

(12)统计元素出现的次数       #  s.count(x) 是方法  不是函数

1.s.count(x)     s是统计的序列   x是统计次数的元素

>>> name =["tom","jerry","mike","peter","john"]

>>> name.count("tom")

1

>>> name.count("mike")

1

>>> name.count("ask")

0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值