2015-11-13 106 views
0

我想循環遍歷一個集合Group並獲取該集團的最後一個值。如何遍歷一個集合並獲取集合的最後一個值

我嘗試以下的代碼:

m = list() 
for i in range (1,6): 
    Group = base.Getentity(constants.ABAQUS, "SET", i) 
    m.append(Group) 
    print(Group) 

而我的結果如下:

<Entity:0*17a:id:1> 
<Entity:0*14g:id:2> 
<Entity:0*14f:id:3> 
<Entity:0*14a:id:4> 
None 
None 

在上面的代碼中,我已經採用了一系列(1,6)作爲一個例子,但在現實中我不會」噸知道範圍編號,所以我想寫的代碼,不使用range/xrangeprint

儘管代碼是用Python編寫的,但我的問題更一般。

+1

最後一個元素可以用'm [-1]'得到嗎?在你的代碼中,你將'set'附加到'm',但是'set'沒有被定義,只要我能看到 –

+0

對不起,它沒有設置,它是組 –

回答

0
my_set = {1, 'hello', 12.4} 
print(my_set) 
print(list(my_set).pop()) 

--output:-- 
{1, 12.4, 'hello'} 
hello 

my_set = {1, 'hello', 12.4} 
print(my_set) 

while True: 
    try: 
     val = my_set.pop() 
     print(val) 
    except KeyError: 
     print("last: {}".format(val)) 
     break 

--output:-- 
{1, 12.4, 'hello'} 
1 
12.4 
hello 
last: hello 
+0

對不起,這裏的問題得到了設置becoz我不知道如何定義設置,它可能有很多元素 –

+0

@Agastya Peela,咦?你的問題是:*我想循環一個集合,並獲得集合的最後一個值。 – 7stud

+0

我認爲問題在於他必須首先生成列表。從列表中獲取最後一項。 – Glaslos

2

你的代碼沒有多大意義。

m.append(set) 

沒有做任何事情,它只是追加蟒蛇類型setm,而不是你從base.Getentity

但是回到剛纔的問題中獲得的價值。

你可以嘗試使用while循環。

像這樣:

m = [] 
i = 0 
while True: 
    group = base.Getentity(constants.ABAQUS,"SET",i) 
    if group is None: 
     break 
    i += 1 
    m.append(group) 
print(m[-1]) 
+0

它不工作的結果是None,m =無 –

+0

一組可以有None作爲一個元素。 – 7stud

+0

謝謝你,它與i = 1一起工作 –

0

我喜歡這個簡單的迭代解決方案可能會做你的工作:

last_group = None 
i = 0 
while True: 
    next_group = base.Getentity(constants.ABAQUS, "SET", i) 
    i += 1 
    if next_group is None: 
     break 
    last_group = i, next_group 

print last_group 
+0

'i'沒有被定義;) –

+0

如果i + = 1不是必需的,如果返回值是None,那麼可以通過執行i + = x來提高效率,如果它不是None,那麼我= - x/2 ,我+ = x/4等等...... :) – Glaslos

+0

是啊,我沒有定義,我不知道定義 –

0

假設i是未知的,你必須遍歷i讓你最終結果:

生成你的價值觀和打印最後:

i = 1 
last_group = None 
while True: 
    group = base.Getentity(constants.ABAQUS,"SET", i) 
    if not group: 
     print 'Last item: {0} with i: {1}'.format(last_group, i) 
    last_group = group 
    i += 1 

我們沒有跟上的結果列表,因此保持低內存佔用,如果i可能很大。