标题很难理解,但这基本上就是我想要做的。我正在尝试制作一些像这样的变量列表:
bad URI(is not URI?): file-digest:///Volumes/Internal HDD/Dropbox/ClientName/Apps/Project Folder Name/project-name/app/assets/config
并将其转换为以下内容:
no beta stupid motorbike yes big_boom
最终目标是搜索此变量列表,并找到相互冲突的变量。例如:
list = ['no', 'beta', 'stupid', 'motorbike', 'yes', 'big_boom']
另一个例子,更多地看到了它的作用:
if exist 'yes' and 'no' in list:
fail
else:
pass
这确实很复杂,但我感谢任何帮助!
问题或评论:
https://docs.google.com/document/d/1tRHFHr8bp6_E31lhgYBKrwWb-2qscHoUWb6lVLlY4cc/edit?usp=sharing
答案 0 :(得分:1)
import inspect
# these are your variables
no = 10
beta = 20
stupid = 30
motorbike = 40
yes = 50
big_boom = 60
# this is your list of variables
list1 = [no, beta, stupid, motorbike, yes, big_boom]
# this function takes in a variable name and returns it as a string
def retrieve_name(var):
callers_local_vars = inspect.currentframe().f_back.f_locals.items()
return [var_name for var_name, var_val in callers_local_vars if var_val is var][0]
# call retrieve_name() function for each element in list1
list_of_variables = list(map(retrieve_name, list1))
print(list_of_variables)
这将打印:
['no', 'beta', 'stupid', 'motorbike', 'yes', 'big_boom']
答案 1 :(得分:0)
只需使用all
检查您要显示在列表中的所有项目。如果是这样,列表理解将是最简单的方法,它可以将您不想删除的项目返回给您的新列表,并最终通过加入这些项目来打印您的字符串。
li = ['no', 'beta', 'stupid', 'motorbike', 'yes', 'big_boom']
items = ['yes','no'] #items you want in the list before anything happens
if all(item in li for item in items):
new_li = [i for i in li if i != 'no'] #remove the item you do not need
print(' '.join(new_li)) #print the string output
答案 2 :(得分:0)
几乎逐步执行伪代码,使用.split()
创建列表,然后使用列表推导创建final_lst
和' '.join()
将其拼凑在一起。
注意:您设计的代码的功能在很大程度上取决于以下事实:您的输入满足创建变量的if
要求,如果设计的代码失败,由于if
和my_var
之类的变量不会被初始化,因此final_lst
语句未触发。
s = 'no beta stupid motorbike yes big_boom'
if 'yes' in s and 'no' in s:
my_var = 1
lst = s.split()
if my_var == 1:
final_lst = [i for i in lst if i != 'no']
res = ' '.join(final_lst)
print(res)
# beta stupid motorbike yes big_boom
答案 3 :(得分:-1)
这是一个简单的示例,说明如何读取txt,将其拆分为列表,验证其中的元素并过滤出元素:
def filter_list(lst: list, exclude: list):
"""filter a list by excluding elements"""
return list(filter(lambda x: x in exclude, lst))
txt = 'no beta stupid motorbike yes big_boom'
lst = text.split(' ') # Split on the spacing
myVar = 0
if ('yes' in lst) and ('no' in lst):
myVar = 1
if myVar:
filtered_lst = filter_list(lst, ['excluded word 1', 'excluded word 2'])
print(' '.join(filtered_lst))
答案 4 :(得分:-1)
对于您的第一个示例,我将使用此逻辑。
is_in
string.split()
的声明使您可以列出要在列表中找到的内容,然后提供该列表。 A list
将其转换为class alpha::params {
$x = "aaa"
$y = "bbb"
}