除非另有说明,否则使用第一项

时间:2018-10-04 15:29:26

标签: python python-3.x list

是否存在一个变量类型,该变量类型是一个列表,但是除非指定索引,否则它是单个值?

var = [1, 2, 3]
print var
print var[1]

输出

1
2

目的是用于我的自动化脚本。我有两种方法使用该方法:

  1. toggle.find(get_cell(“ Sounds”))
  2. click(get_cell(“声音”))

在第一种情况下,切换将使用get_cell返回值列表重新尝试查找

在第二种情况下,单击只想使用列表中的第一个值

3 个答案:

答案 0 :(得分:1)

您可以定义自己的 custom 列表类:

class ListWithDefault(list):
    def __init__(self, type):
        self.type = type

     def __repr__(self):
        return repr(self[0])
        #this will print the list's first index when print is called to it.

     def get(self, index=0)
         return self[index]
         #this allows u to get a value at an index or without specifying it returns the first value as default

答案 1 :(得分:0)

据我所知,内置的python库中没有这样的东西,但是您始终可以实现所需的东西。您尚未指定所需的所有内容,但请考虑以下代码:

class MyList:
    def __init__(self):
        self.__list = []

    def append(self, value):
        self.__list.append(value)

    def __getitem__(self, indices):
        if not isinstance(indices, tuple):
            return self.__list[indices]
        return self.__list[indices[0]:indices[1]]

    def __str__(self):
        return f"MyList [{self.__list[0]}]"

    def __mul__(self, a):
        assert isinstance(a, int)
        for i, val in enumerate(self.__list):
            self.__list[i] = val * a
        return self

可以这样使用:

myList = MyList()
myList.append(10)
myList.append(9)
print(myList)
print(myList[1])
print(myList[:])
print(myList * 2)
print(myList[:])

输出将是:

MyList [10]
9
[10, 9]
MyList [20]
[20, 18]

答案 2 :(得分:0)

实现所需功能的最简单方法是修改get_cell函数可以接受的参数数量。

def get_cell(sounds, return_all = False): 
    lst = [1,2,3]
    if return_all:
        return lst
    else:
        return lst[0] 


first = get_cell("Sounds")
print(first) # 1

# to get just first element use as click(get_cell("Sounds"))

all_vals = get_cell("Sounds", return_all = True)
print(all_vals) # [1, 2, 3]

# to get complete list use as toggle.find(get_cell("Sounds",return_all = True))