Maya python第二章 python数据基础知识 2.3-2.6

2.3 使用数字

数字类型:

9894bec1956a4d56aeff3c22b6489f68.png

 

var = -5
print(type(var))
var = -5.0
print(type(var))
var = -5 + 2j
print(type(var))
print(var.real,var.imag)

基本运算符

注意:Python不支持增运算符,如++和--

b85185b158364ce8b5cc5773c4db06b8.png

 36eee585588b42c7955a3d9d2ab3ad1e.png

 2.4 使用布尔值

x or y  如果x或y是True,则为True   只有在x是False时才会计算y的值

x and y 如果x 和 y 都是True,则为 True  只有在x 是True的时候才会计算y的值

2.5 使用序列类型

串联

  你可以串联任意序列类型,但只能串联具有相同类型的其他序列。例如,不能串联列表和元组。

下列代码行生成了字符串"Word make sentences"

'Words'+' '+'make'+' '+'sentences'

e528a8ed3c6646f196129299727e4332.png

 同样,下列代码行生成列表[1,2,3,4,5,6]

cc7e2b39d90548b2a36d60670caea425.png

 

[1,2,3]+[4,5,6]

索引和切片

  无法使用索引运算符来改变元组中的各项或字符串中的字符。

184787c0ab0f4118995dfa1a381b00b3.png

 03ba2e93eecc40b0a4394c60333f9f2b.png

 提取“X”

8389ccf8bea846cc8ada6ec160449baf.png

 负索引

 ca7555dc0e574cc0b78cc8afa400728e.png

 

print((1,2,3,4,5)[-2])
var = 'Holy cats,Python is awesome'

print(var[5:9])

print(var[:9])

print(var[-len('awesome'):])

print(var[var.index('Python'):])

nums = (1,2,3,4,5,6,7,8)
nums[:4:]
print(nums[:4:])
print(nums[::2])
print(nums[1::2])
print(nums[::-1])

字符串类型

转义序列和多行字符串

6e7a21164847470b82ab1d4654dfad2c.png

var = '"I\'m tired of these examples."'
print(var)
var = "\"I'm tired of these examples.\""
print(var)
var = 'line 1\nline 2'
print(var)

var = "line 1\nline 2"

print(var)
var = """line 1 
line 2"""

print(var)

原始字符串

可以为值添加r或R字符前缀来表示值是原始字符串,并且不认为反斜杠可以对一下字符串进行转义。下面两个实例会产生相同结果。

c02bdf4ba2864e02b63aad6b3c9848f8.png

var = 'C:\\Users\\Adam\\Desktop'
print(var)


var = r'C:\Users\Adam\Desktop'
print(var)

 Unicode字符串

0f80825382294e24b62d679e3f0d4cee.png

 

var = u'-5'
print(type(var))


print(u'Gr\u00fc\u00df dich')

格式化字符串

50d59e71cfbd426eb93e2dbd04eccd8a.png

 

cube = 6

pi = 3.141592654

print('There are %s sides to a cube,and about %.2f radians in a circle'%(cube,2*pi))

decedcd962be4ce394838d1fa2ce9387.png

 有关列表的更多内容

del()

6ad7d0b215634b1f83b7bb3488eaffa5.png

 

nums = [0,1,2,3,4,5,6,7]

del(nums[1])

print(nums)

nums = [0,1,2,3,4,5,6,7]

del(nums[2:4])

print(nums)

#注意,在这两种情况下都修改了原始列表。没有创建新的列表。
#可以执行下列命令行来确认标识符是否完好无损。

nums = [0,1,2,3]

print('id before',id(nums))

del(nums[1:2])

print('id after',id(nums))

 嵌套列表

  如进所见,到目前为止,不可变对象(如元组)不允许更改其值。更改指向具有不可变类型对象的变量值会完全引用新数据。但是,正如列表展示的索引值分配和del()实例所示,可变对象的值可以修改。这一原则的结果是,当更改可变对象的值时,会保留可变类型的引用。

创建了三个不可变对象(数字)并将他们放入了列表中

02129b0cb06b40a5b3fcc556a3f43ef2.png

a = 1
b = 2
c = 3
abc = [a,b,c]
print(abc)
#此时,对变量a,b和c做进一步修改不会更改 列表abc
a = 2
b = 4
c = 6
print(a)
print(b)
print(c)
print(abc)

  你不会在列表中看到变化,因为,最初创建变量a,b和c 时,它们都引用内存中的不可变对象。

当使用这些变量初始化列表时,列表中的每个元素都指向内存中的相同对象。但是,当重新分配变量a,b和c 的值时,它们将引用新数据,而列表中的元素仍引用原始数据。

  但是,对可变对象(如列表)进行更改时,会导致相同对象引用的其他位置发生变化(如下图)。思考一下实例,它将打印一个包含两个列表的元组:([1,3,5,7],[0,2,4,6,8])

c909150933b14687b6ce7d3b9da36eb3.png 

 

0d596ebc188744609b68a20110ed0490.png

 

odds = [1,3,5,7]
evens = [0,2,4,6,8]
numbers = (odds,evens)
print(numbers)

此时,有两个列表,每个列表指向内存中一个不同的可变的位置。还有一个元组,其元素指向内存中相同的位置。此时,值得注意的事这些变量的标识。

cca5af9b52cd4b3ebc8ac384283247ee.png

print('odds',id(odds))
print('evens',id(evens))
print('numbers',id(numbers))

现在,可以对列表进行一些调整,如添加或删除元素。如果执行以下代码行,在修改列表时可以看到数字元组有新的值:

3ff540174c8e480b87efbcc80129242e.png

odds.append(9)
del(evens[0])
print(numbers)

由于元组是不可变的,因此你可能想知道如何更改元组中的值。记住,元组包含两个元素,每个元素作为一个独立的列表在内存中引用相同的位置。由于列表时可变的,因此可以更改它们的值,并保留引用。如果现在打印变量的标识符则它们与更改列表之前的输出相同。

e619ff3827f74d9482a39866d0a94f0a.png

print('odds',id(odds))
print('evens',id(evens))
print('numbers',id(numbers))

  最后,注意只有可变数据的改变才会影响其他变量的值,重新分配指向数据的变量不会有类似的影响。这种情况的原因在于,元组(或列表)外部的列表是数据对象而不是另一个变量(它本身是一些对象的引用)。下列代码行表明重新分配odds列表不会影响numbers元组内引用的对象。

2b9fe69c55b74d7996d906ea9e81bb7d.png

 18486ab24ab04d8a83459bc259557552.png

 

odds = []
print(numbers)

2.6 其他容器类型

  集合

尽管集合有许多应用,但最常见的用法包括关系测试和从序列中删除重复项。注意,集合是可变类型。Python还会执行一种类似类型,既frozenset类型,它是不可变的。

a6d2132214864019be2bcb83c3b053ad.png

set1 = set([1,2,3,3,5,6,7,7,7,8,9])
print(set1)

字典

  eb5a28eac58a48ce818ba39976a44103.png

记住,键可以是任意不可变类型,而值可以是任何类型。

9829f7ec563444d2b13a0b84c2a2a0cd.png

import maya.cmds as cmds
loc = cmds.spaceLocator()[0]
print(cmds.xform(loc,q=True,rotateOrder = True))

实践中的字典

a379665dbbdb4bbb89ffe4816ef7c6cd.png

 bba71cc3b79b4e048285548fd915e7de.png

 

import maya.cmds as cmds
loc = cmds.spaceLocator()[0]
print(cmds.getAttr('%s.rotateOrder'%loc))

roStrToInt = {
    'xyz':0,'yzx':1,'zxy':2,
    'xzy':3,'yxz':4,'zyx':5
}

roIntToStr = {
    0:'xyz',1:'yzx',2:'zxy',
    3:'xzy',4:'yxz',5:'zyx'
}

cube = cmds.polyCube()[0]
cmds.setAttr('%s.rotateOrder'%cube,roStrToInt['zxy'])
rotateOrder = cmds.getAttr('%s.rotateOrder'%cube)
print('rotateOrder = %d'%rotateOrder)
print(roIntToStr[rotateOrder])
joint1 = cmds.joint(rotationOrder = roIntToStr[rotateOrder])

051d443a25214e10ade4235e366f8abb.pngb30d1359c46348f88ed029349fe67f78.png

 

import maya.cmds as cmds
loc = cmds.spaceLocator()[0]
print(cmds.getAttr('%s.rotateOrder'%loc))

roStrToInt = {
    'xyz':0,'yzx':1,'zxy':2,
    'xzy':3,'yxz':4,'zyx':5
}

roIntToStr = {
    0:'xyz',1:'yzx',2:'zxy',
    3:'xzy',4:'yxz',5:'zyx'
}

cube = cmds.polyCube()[0]
cmds.setAttr('%s.rotateOrder'%cube,roStrToInt['zxy'])
rotateOrder = cmds.getAttr('%s.rotateOrder'%cube)
print('rotateOrder = %d'%rotateOrder)
print(roIntToStr[rotateOrder])
joint1 = cmds.joint(rotationOrder = roIntToStr[rotateOrder])

cmds.setAttr('%s.rotateOrder'%joint1,roStrToInt['xyz'])

print('joint1 rotateOrder = %s'%(cmds.getAttr('%s.rotateOrder'%joint1)))

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三七3333333

少年我觉得你骨骼惊奇打赏一下~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值