< 2FeRed's Conundrum of Life :: [아바쿠스] 파이썬 스크립팅 #.5 시퀀스






*. 코드 분석용 형식없는 개인공부.

**. 표기되지 않은 자료의 출처는 Abaqus Scripting User's Manual (v6.8)에서 따옴.

시퀀스

시퀀스는 파이썬에서 매우 강력하고 중요한 데이터 종류이다. 시퀀스 오브젝트는 여러 오브젝트를 포함하고 있으며, 파이썬에서는 세종류의 기본 시퀀스를 제공하고 있다. list, tuple, string가 그 예이다. 또한 모듈을 불러오면 배열도 사용할 수 있다.

 종류 변형성
동일성
메써드
구문
 list 가능
불가 가능 [9.0,'b']
 tuple 불가 불가
불가 ('a',45)
 string 불가
가능 가능 
'stress'
 array  가능 가능
가능 
array((1.2,2.3),(2.5,5.8))

변형성 : 요소들을 더하거나 변경하거나 제거할 수 있음
동일성 : 요소들이 동일한 데이터 타입이어야함
메써드 : sort()나 reverse()와 같은 함수가 지원되는 시퀀스임
구문 : 시퀀스를 생성하는 구문

List


리스트는 문자, 정수, 플롯이나 이것들의 조합을 사용할 수 있다. 실재로 리스트는 어떤종류의 오브젝트라도 포함가능하다.

>>> myIntegerList = [7,6,5,4]
>>> myFloatList  = [7.1,6.5,5.3,4.8]

리스트 내부의 인덱스는 0에서 부터 시작한다. - 값인 경우는 맨뒤에서부터 카운트한다.

>>> myList = [1,2,3]
>>> myList[0]
1

>>> myList[1] = 9

>>> myList
[1, 9, 3]

>>> myNewList = [1.0,2.0,myList]

>>> myNewList
[1.0, 2.0, [1, 9, 3]]
>>> myNewList[-1]
[1, 9, 3]

리스트는 여러가지의 데이터 종류를 저장할 수 있다.

>>> myList=[1,2.5,'steel']

리스트는 내부에 다시 리스트를 저장할 수 있다.

>>> myList=[[0,1,2],[3,4,5],[6,7,8]]
>>> myList[0]
[0, 1, 2]
>>> myList[2]
[6,7,8]

아래의 예를 보면 리스트 내의 다른 리스트를 참조하는 법을 알 수있다.
(인덱스는 항상 0에서 시작됨을 기억하자.)

>>> myList[1][2]
5

파이썬은 리스트내의 데이터를 처리할 수 있는 기본 방법을 제공한다.

>>> myList
[1, 9, 3]
>>> myList.append(33)
>>> myList
[1, 9, 3, 33]
>>> myList.remove(9)
>>> myList
[1, 3, 33]

리스트는 여러가지의 데이터 종류를 저장할 수 있다.

아래의 방법들은 추가적인 내장연산자의 사용예시이다.

count()

리스트내에 정해진 값이 몇개가 있는지 세는 방법

>>> myList = [0,1,2,1,2,3,2,3,4,3,4,5]
>>> myList.count(2)
3

index()

리스트내에 정해진 값이 몇번째에 처음으로 나타나는지 알려준다.

>>> myList.index(5)
11
>>> myList.index(4)
8

insert()

정해진 위치에 새로운 요소를 삽입한다.

>>> myList.insert(2,22)  
>>> myList
[0, 1, 22, 2, 1, 2, 3, 2, 3, 4, 3, 4, 5]

reverse()

리스트내의 요소를 거꾸로돌린다.

>>> myList.reverse()
>>> myList
[5, 4, 3, 4, 3, 2, 3, 2, 1, 2, 22, 1, 0]

sort()

리스트내의 요소를 정렬해준다.

>>> myList.sort()
>>> myList
[0, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 5, 22]


Tuple

튜플은 리스트와 매우 유사하나 한번 정의되면 어떤것도 변경할 수가 없다.

myTuple = ()

1개의 요소를 지닌 튜플의 정의는 아래와 같다.

myTuple = (5.675,)

리스트나 스트링을 튜플을 사용하여 튜플로 변경가능하다.

>>> myList = [1, 2, "stress", 4.67]
>>> myTuple = tuple(myList)
>>> print myTuple
(1, 2, 'stress', 4.67)
>>> myString = 'Failure mode'
>>> myTuple = tuple(myString)
>>> print myTuple
('F', 'a', 'i', 'l', 'u', 'r', 'e', ' ', 'm', 'o', 'd', 'e')

아래는 튜플을 만든후에 속성을 확인하고 튜플의 요소를 변경하려고 했을 경우에 에러가 나타나는 것을 보여준다.

>>> myTuple = (1,2,3,4,5)
>>> type(myTuple)
<type 'tuple'>
>>> myTuple[2]=3
Traceback (innermost last):
  File "", line 1, in ?
AttributeError: __setitem__

String

스트링은 요소를 변경할 수 없는 타입이다.
스트링은 작은따옴표 (')나 큰따옴표 (")로 정의된다. "+"를 사용해서 2개의 스트링을 묶어 새로운 스트링을 만들 수 있다. 


>>> odbString = "Symbol plot from "
>>> odb = 'load1.odb'
>>> annotationString = odbString + odb
>>> print annotationString
Symbol plot from load1.odb

주의 : 리스트나 튜플에서도 "+"연산을 사용할 수 있다.

파이썬에서는 스트링을 처리하기위한 기본 함수를 제공한다.

>>> annotationString
'Symbol plot from load1.odb'
>>> annotationString.upper()
'SYMBOL PLOT FROM LOAD1.ODB'
>>> annotationString.split()
['Symbol', 'plot', 'from', 'load1.odb']

- 인덱스들을 사용하면 스트링의 끝부터 읽는다.

>>> axis_label = 'maxstrain'
>>> axis_label[-1]
'n'

>>> myList = [8, 9, 10]
>>> str(myList)
'[8, 9, 10]'

www.python.org 에서 스트링처리에 관한 함수들을 찾아볼 수 있다.

Array

다차원 배열을 생성할 수 있다. 파이썬이 배열에 있는 요소의 종류를 결정하므로 배열의 종류를 결정할 필요는 없다.

>>> from Numeric import array
>>> myIntegerArray = array([[1,2],[2,3],[3,4]])
>>> myIntegerArray
array([[1, 2],
       [2, 3],
       [3, 4]])
>>> myRealArray =array([[1.0,2],[2,3],[3,4]])
>>> myRealArray
array([[1., 2.],
       [2., 3.],
       [3., 4.]])
>>> myRealArray * myIntegerArray
array([[  1.,   4.],
       [  4.,   9.],
       [  9.,  16.]])

배열에서 사용가능한 메써드를 확인하려면
오브젝트이름.__methods__로 확인하면 된다.

>>> myArray=array(((1,3),(2,4),(3,5)))
>>> myArray.__methods__
['__copy__', 'astype', 'byteswapped', 'iscontiguous',
 'itemsize', 'tolist', 'tostring', 'typecode']

아름다운 인터넷 문화를 위해 댓글을 남겨주세요. -0-;
YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST