以定义一个整型数据为例
a=10
id(a)
Out[23]: 140704902390448
type(a)
Out[24]: int
value(a)
对象的基本组成包括 ID type 和 value三个要素。是一个内存块,ID为内存块地址,type 为数据类型,value则对应数据的具体值。存储特定值且允许进行特定操作
对象的引用,例中 首先在内存中开辟一块空间,存储一个整型数据10,通过id()和type()命令来获得该对象的内存ID,数据类型以及值value。然后,在做赋值操作时,相当于把对象ID给了a。
变量存储在栈内存中,对象存储在堆内存中
常见的数据格式有 int float str 等等
这里有个问题
a=3
b=3.14
a+b
Out[28]: 6.140000000000001
在进行数值计算时希望得到6.14
上述代码中得到的结果是由计算机中的二进制计算造成的,如果希望的到准确结果,则需要导入decimal 包(这是进行科学计算中常用的函数)
from decimal import *
a=Decimal(1)
b=Decimal(2)
a+b
Out[37]: Decimal('3')
c=Decimal('2.2')
d=Decimal('3.2')
c+d
Out[40]: Decimal('5.4')
传入整数时不需要加(‘’) ,传入小数时必须加(‘’)。
另外还可以通过decimal 设定有效数字及小数位数
getcontext().prec=4
Decimal(2.2)/Decimal(2.1)
Out[42]: Decimal('1.048')
Decimal('1.2345678').quantize(Decimal('0.00'))
Out[44]: Decimal('1.23')
‘a’+‘b’ =>‘ab’
"+"号两边如果是字符串格式则拼接
如果是数值格式则求和
如果两边数据类型不同,则报错
还可以直接把两个字符串放到一起
‘a’‘b’ =>‘ab’
print('aaa', end='***')
print('bbb', end='***')
aaa***bbb***
In[47]: a='987654321'
a[1]
Out[48]: '8'
a[-1]
Out[49]: '1'
a.replace('1','one')
Out[50]: '98765432one'
注意这里放回的字符串是一个新的字符串
a.split(sep='5')
Out[51]: ['9876', '4321']
b=['123','456']
'_'.join(b)
Out[56]: '123_456'
去除首位空格
' abc '.strip()
Out[59]: 'abc'
也可以去除左侧、右侧、以及所有空格
a='我的名字是{0},我的ID是{1}'
a.format('Jack',12345)
Out[63]: '我的名字是Jack,我的ID是12345'
a='我的名字是{name},我的ID是{id}'
a.format(name='jack',id=456789)
Out[65]: '我的名字是jack,我的ID是456789'
a='我的名字是{name},我的得分是{id:.0f}'
a.format(name='jack',id=12345.5689)
Out[70]: '我的名字是jack,我的得分是12346'
a=['a','b','c','d']
a=list('abcd')
a
Out[5]: ['a', 'b', 'c', 'd']
list(range(1,10,2))
Out[6]: [1, 3, 5, 7, 9]
a=[x*2 for x in range(10)]
a
Out[8]: [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
a
Out[8]: [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
a.append(80)
a
Out[10]: [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 80]
a+[20]
Out[11]: [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 80, 20]
a.extend([30])
a
Out[14]: [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 80, 30]
"+"操作和extend操作的区别 + 操作会创建新的列表,会增加内存extend在原有列表基础上操作,不创建新的列表
del(a[1])
a
Out[16]: [0, 4, 6, 8, 10, 12, 14, 16, 18, 80, 30]
Out[16]: [0, 4, 6, 8, 10, 12, 14, 16, 18, 80, 30]
a.pop()
Out[17]: 30
a
Out[18]: [0, 4, 6, 8, 10, 12, 14, 16, 18, 80]
Out[20]: [0, 4, 6, 8, 10, 12, 14, 16, 18, 80, 4]
a.remove(4)
a
Out[22]: [0, 6, 8, 10, 12, 14, 16, 18, 80, 4]
Out[29]: [0, 6, 8, 10, 12, 14, 16, 18, 80, 4, 6, 6]
a.index(6)
Out[30]: 1
a.index(6,3)
Out[31]: 10
a.count(6)
Out[32]: 3
index()返回元素首个出现的index
count() 返回元素出现的次数
a[:]
Out[33]: [0, 6, 8, 10, 12, 14, 16, 18, 80, 4, 6, 6]
a[1:3:2]
Out[34]: [6]
a[::-1]
Out[35]: [6, 6, 4, 80, 18, 16, 14, 12, 10, 8, 6, 0]
a[-3]
Out[36]: 4
a[-8:-3]
Out[37]: [12, 14, 16, 18, 80]
a.sort()
a
Out[39]: [0, 4, 6, 6, 6, 8, 10, 12, 14, 16, 18, 80]
a.sort(reverse=True)
a
Out[41]: [80, 18, 16, 14, 12, 10, 8, 6, 6, 6, 4, 0]
import random
random.shuffle(a)
a
Out[44]: [6, 14, 18, 4, 10, 8, 16, 12, 6, 80, 0, 6]
a=sorted(a)
a
Out[47]: [0, 4, 6, 6, 6, 8, 10, 12, 14, 16, 18, 80]
sort() 列表操作方法,是在原列表基础上进行操作
sorted()是python函数,会建一个新的列表
a = [
[1, 2, 3, 4, 5],
[2, 3, 6, 4, 7],
[4, 5, 6, 6, 8]
]
for i in range(3):
for j in range(5):
# 不换行打印,打印一行
print(a[i][j], end='')
# 打印完换行
print()
12345
23647
45668
a=(1)
type(a)
Out[61]: int
a=(1,)
type(a)
Out[63]: tuple
a[0]
Out[65]: 1
a[0]=2
Traceback (most recent call last):
File "C:\Users\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 3319, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "" , line 1, in <module>
a[0]=2
TypeError: 'tuple' object does not support item assignment
元组与列表的区别,元组是不可变序列
其他操作可以参考list
a=dict(a=1,b=2,c=3)
a=dict([('a',1),('b',2),('c',3)])
a={'a':1,'b':2,'c':3}
k=['a','b','c']
v=[1,2,3]
d=dict(zip(k,v))
d
Out[77]: {'a': 1, 'b': 2, 'c': 3}
a=dict.fromkeys(['a','b','c'])
a
Out[3]: {'a': None, 'b': None, 'c': None}
a=dict([('a',1),('b',2),('c',3)])
a['a']
Out[6]: 1
a.get('d')
a.get('a')
Out[8]: 1
a.get('d',5)
a.items()
Out[11]: dict_items([('a', 1), ('b', 2), ('c', 3)])
a.keys()
Out[12]: dict_keys(['a', 'b', 'c'])
a.values()
Out[13]: dict_values([1, 2, 3])
'a'in a
Out[14]: True
a['e']=5
a
Out[16]: {'a': 1, 'b': 2, 'c': 3, 'e': 5}
del(a['e'])
a
Out[18]: {'a': 1, 'b': 2, 'c': 3}
a.pop('a')
Out[19]: 1
a.popitem()
Out[20]: ('c', 3)
另外还有update()函数,可更新字典
a={'a': 1, 'b': 2, 'c': 3}
c,d,e=a
c
Out[24]: 'a'
c,d,e=a.items()
c
Out[26]: ('a', 1)
c,d,e=a.keys()
d
Out[28]: 'b'
c,d,e=a.values()
e
Out[30]: 3
r1 = {'a': 1, 'b': 2, 'c': 3}
r2 = {'a': 4, 'b': 5, 'c': 6}
r3 = dict([('a', 7), ('b', 8), ('c', 9)])
tb = [r1, r2, r3]
for i in range(len(tb)):
print(tb[i].get('a'), tb[i].get('b'), tb[i].get('c'))
1 2 3
4 5 6
7 8 9
== 判断的是对象的value是否相同
is 判断的是对象的ID是否相同
另外,pycharm会对[-5,正无穷]的数值进行缓存