python添加几何属性(python 给类添加属性)

  • 1、为什么python中基本类型如 str int 的对象不能动态添加属性?
  • 2、arcgis9.3怎么使用python
  • 3、python如何向数组中添加元素
  • 4、python中如何在set中添加元素?语句是什么
  • 5、Python基础实战之集合元素的添加和删除

比较简单的方式是把str和int理解为“原始数据类型”,其结构是不可以修改的。理由是,str和int是python中提供的标准数据类型,大家已经对这种数据类型的性质和用法有了普遍的共识和预定。如果硬要自己进行修改或者加上一些自定义的属性,就很容易破坏这种“共识”,进而导致程序可读性下降,甚至引入潜在的bug。

如果需要动态添加属性,就自己去定义一个专门的class,并在注释中写清楚该class可能会具有的属性,这样就显得很清楚。

Python 表达式可通过 几何对象中的属性(type、extent、centroid、firstPoint、lastPoint、area、length、isMultipart 和 partCount)进行创建。

!shape.area!

Python 表达式可以使用具有面积或线性单位的几何 area 和 length 属性将值转换为不同的测量单位(例如 !shape.length@kilometers!)。如果数据存储在地理坐标系中且具有线性单位(例如英里),则使用测地线算法计算长度。在地理数据中使用面积单位会产生不正确的结果,这是由于沿 globe 的十进制度并不一致。

面积测量单位关键字:

英亩 | 公亩 | 公顷 | 平方厘米 | 平方分米 | 平方英寸 | 平方英尺 | 平方千米 | 平方米 | 平方英里 | 平方毫米 | 平方码 | 平方地图单位 | 未知

线性测量单位关键字:

厘米 | 十进制度 | 分米 | 英尺 | 英寸 | 千米 | 米 | 英里 | 毫米 | 海里 | 磅 | 未知 | 码

在工具对话框中,可将表达式直接输入到表达式参数中,或者使用“字段计算器”以交互方式构建表达式。

使用所选要素集(如从创建要素图层或按属性选择图层内的查询中创建的要素集)时,此工具将只更新所选的记录。

每次操作仅能对一个字段应用计算。

现有字段值将被覆盖。如果想要保留原始字段值,应创建输入表副本

对于 Python 计算,必须在字段名称两旁添加惊叹号(!字段名!)。

对于 VB 计算,字段名称必须用方括号括起([字段名])。

计算文本或字符字段的字符串时,在对话框中,必须对字符串添加双引号(”字符串”),而在脚本中,还必须对加双引号的字符串添加单引号('”字符串”‘)。

此工具也可用于更新字符项。应对使用字符串的表达式添加单引号(例如 [CHARITEM] = ‘新字符串’)。但是,如果字符串已包含单引号,则要对该字符串添加双引号,例如 [CHARITEM] = “类型’A'”。

要计算数值字段,可在表达式参数中输入数值;值的两旁无需加引号。

如果已指定 Python 表达式,则此工具支持 arcgis.rand() 函数。已为 ArcGIS 工具创建 arcgis.rand() 函数,不应将此函数与 Python Rand() 函数相混淆。arcgis.rand() 函数的可用分布的语法在随机值的分布语法中进行介绍。

表达式与代码块会相互连接。代码块必须返回与表达式的关联;代码块的结果应传入到表达式中。

代码块参数可用于创建复杂表达式。您可以在对话框中直接输入代码块,或在脚本中将代码块作为连续字符串输入。

Python 数学模块及格式可供代码块参数使用。您可以导入附加模块。数学模块可提供数论函数与表达函数、幂函数与对数函数、三角函数、角度转换函数、双曲函数以及数学常数。要了解更多有关数学模块的内容,请参阅 Python 的帮助。

保存的 ArcGIS 先前版本的 VB .cal 文件可以直接使用或者只需做少量修改后即可使用。如果拥有使用 ArcObjects 的过去版本的 VBA 代码,则计算需经过修改后才能用于 10.0。

计算连接数据时,您无法直接计算连接列。然而,您可以直接计算源表的列。要计算连接数据,必须先将连接表或连接图层添加至 ArcMap。然后可以分别对此数据执行计算。这些更改将反映在连接列中。

计算字段示例

首先进入python的编辑器界面!

写上这个程序的一个注释内容!

相关推荐:《Python视频教程》

新建一个students变量,用来存储学生的名字!

然后就是通过append函数在数组中插入一个元素!

最后将这个数组打印出来!

选择运行命令“run”-“run”。

最后运行程序,发现新的元素已经成功插入了!

以上就是小编分享的关于python如何向数组中添加元素的详细内容希望对大家有所帮助,更多有关python教程请关注环球青藤其它相关文章!

python的set和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素. 集合对象还支持union(联合), intersection(交), difference(差)和sysmmetric difference(对称差集)等数学运算.

sets 支持 x in set, len(set),和 for x in set。作为一个无序的集合,sets不记录元素位置或者插入点。因此,sets不支持 indexing, slicing, 或其它类序列(sequence-like)的操作。

下面来点简单的小例子说明把。

x = set(‘spam’)

y = set([‘h’,’a’,’m’])

x, y

(set([‘a’, ‘p’, ‘s’, ‘m’]), set([‘a’, ‘h’, ‘m’]))

再来些小应用。

x y # 交集

set([‘a’, ‘m’])

x | y # 并集

set([‘a’, ‘p’, ‘s’, ‘h’, ‘m’])

x – y # 差集

set([‘p’, ‘s’])

记得以前个网友提问怎么去除海量列表里重复元素,用hash来解决也行,只不过感觉在性能上不是很高,用set解决还是很不错的,示例如下:

a = [11,22,33,44,11,22]

b = set(a)

b

set([33, 11, 44, 22])

c = [i for i in b]

c

[33, 11, 44, 22]

很酷把,几行就可以搞定。

1.8 集合

集合用于包含一组无序的对象。要创建集合,可使用set()函数并像下面这样提供一系列的项:

s = set([3,5,9,10]) #创建一个数值集合

t = set(“Hello”) #创建一个唯一字符的集合

与列表和元组不同,集合是无序的,也无法通过数字进行索引。此外,集合中的元素不能重复。例如,如果检查前面代码中t集合的值,结果会是:

t

set([‘H’, ‘e’, ‘l’, ‘o’])

注意只出现了一个’l’。

集合支持一系列标准操作,包括并集、交集、差集和对称差集,例如:

a = t | s # t 和 s的并集

b = t s # t 和 s的交集

c = t – s # 求差集(项在t中,但不在s中)

d = t ^ s # 对称差集(项在t或s中,但不会同时出现在二者中)

基本操作:

t.add(‘x’) # 添加一项

s.update([10,37,42]) # 在s中添加多项

使用remove()可以删除一项:

t.remove(‘H’)

len(s)

set 的长度

x in s

测试 x 是否是 s 的成员

x not in s

测试 x 是否不是 s 的成员

s.issubset(t)

s = t

测试是否 s 中的每一个元素都在 t 中

s.issuperset(t)

s = t

测试是否 t 中的每一个元素都在 s 中

s.union(t)

s | t

返回一个新的 set 包含 s 和 t 中的每一个元素

s.intersection(t)

s t

返回一个新的 set 包含 s 和 t 中的公共元素

s.difference(t)

s – t

返回一个新的 set 包含 s 中有但是 t 中没有的元素

s.symmetric_difference(t)

s ^ t

返回一个新的 set 包含 s 和 t 中不重复的元素

s.copy()

返回 set “s”的一个浅复制

请注意:union(), intersection(), difference() 和 symmetric_difference() 的非运算符(non-operator,就是形如 s.union()这样的)版本将会接受任何 iterable 作为参数。相反,它们的运算符版本(operator based counterparts)要求参数必须是 sets。这样可以避免潜在的错误,如:为了更可读而使用 set(‘abc’) ‘cbs’ 来替代 set(‘abc’).intersection(‘cbs’)。从 2.3.1 版本中做的更改:以前所有参数都必须是 sets。

另外,Set 和 ImmutableSet 两者都支持 set 与 set 之间的比较。两个 sets 在也只有在这种情况下是相等的:每一个 set 中的元素都是另一个中的元素(二者互为subset)。

集合元素的添加操作有两种方法:

1、调用add()方法,一次添加一个元素

2、调用update()方法,至少添加一个元素

——————————

s={10,20,40,80}

s.add(30) #一次添加一个元素

print(s) #{10,30,20,40,80}

s.updae({200,300,400}) #一次至少添加一个元素

print(s) #{200,10,300,20,400,30,80,40}

s.update([800,900]) #可以添加列表

s.update((45,55)) #可以添加元组

print(s) #{200,5510,45,300,800,20,900,400,30,80,40}

——————————

集合元素的删除操作

1、调用remove()方法,一次删除一个指定元素,如果指定的元素不存在抛出KeyError

2、调用discard()方法,一次删除一个指定元素,如果指定的元素不存在不抛异常

3、调用pop()方法,一次只删除一个任意元素

4、调用clear()方法,清空集合

——————————

s.remove(200) #一次删除一个指定元素,如果指定的元素不存在抛出KeyError

print(s) #{55,10,45,300,800,20,900,400,30,80,40}

s.discard(900) #一次删除一个指定元素,如果指定的元素不存在不抛异常

print(s) #{55,10,45,300,800,20,400,30,80,40}

s.pop() #删除谁不知道,任意一个元素

print(s) #{55,10,45,800,20,400,30,80,40}

s.clear() #清空集合中的所有元素

print(s) #set()

原创文章,作者:简单一点,如若转载,请注明出处:https://www.506064.com/n/126896.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
简单一点的头像简单一点
上一篇 2024-10-03 23:13
下一篇 2024-10-03 23:13

相关推荐

发表回复

登录后才能评论