0
点赞
收藏
分享

微信扫一扫

这就解释了tuple("单个多字符字符串") type==tuple, 其实是字符串被拆分到元组中, 以供len, 下标, 遍历

# 单个多字符字符串拆分
list("单个多字符字符串")
tuple("单个多字符字符串")
set("单个多字符字符串")  # 重新排序
# dict不行 ValueError: dictionary update sequence element #0 has length 1; 2 is required
list("单个多字符字符串",)
tuple("单个多字符字符串",)
set("单个多字符字符串",)  # 重新排序

# 字符串拆分
list("") == list([])
list("单")  # 单个字符也被保存到容器中

这就解释了tuple("单个多字符字符串")

type==tuple, 

其实是字符串被拆分到元组中, 以供len, 下标, 遍历

这就解释了tuple("单个多字符字符串") type==tuple,  其实是字符串被拆分到元组中, 以供len, 下标, 遍历_字符串拆分

# list函数 对输入变量进行列表化

# 输入字符串
list("字符串")  # ['字', '符', '串']

# 输入元组
list(
    ("字符串",)
)  # ['字符串']

# 使用中括号
[
    ("字符串",)
]  # [('字符串',)] 保留原来结构, 将整个对象纳入列表, 而不对对象本身进行列表化

https://blog.51cto.com/u_16055028/8737322

if isinstance(list_CoilNum, str):
        # 避免拆分字符串
        list_CoilNum = [list_CoilNum]
    else:
        # 元组,集合,字典(键名)转列表
        list_CoilNum = list(list_CoilNum)

错误理解记录

def query_CoilNum(list_CoilNum):
    # 避免字典, 集合, 'set' object is not subscriptable, 'dict'会将下标视为键名
    # 避免字符串, 圆括号内单个字符串(不加逗号), 包括: tuple("单个字符串"), tuple("单个字符串",)
    # type(tuple("单个字符串")) == tuple  
    # isinstance(tuple("单个字符串"), tuple) == True  
    # 但是其实是字符串: len, 下标, 遍历均视其为单个字符串
    # len(tuple("单个字符串")) == len("单个字符串")
    # 因此谨慎通过type和len判断类型, 例如tuple("1")就无法被剔除
    # 允许列表, 元组(圆括号内单个字符串加一个逗号算元组)
    # 避免内部元素为None和"", 可通过numpy.array限定内部元素同数据类型
    # 元素为None 输出statement = "((CoilNumber like '%None%'))", 一般无筛选结果
    # 元素为"" 输出statement = "((CoilNumber like '%%'))", 筛选所有非null行
    # 等效于statement = "CoilNumber is not null"
    
    # 综上所述, 可用list函数列表化元组,集合,字典(只保留键名)
    # 避免字符串, 圆括号内单个字符串(不加逗号), 包括: tuple("单个字符串"), tuple("单个字符串",)
    # list函数会对其逐个字符拆分
    # str函数会对tuple("单个字符串"), tuple("单个字符串",)进行逐个字符拆分然后合成字符串
    # tuple("单个字符串"), tuple("单个字符串",), list("单个字符串")
    # 然后判断 if all(x not in [None, ""]) for x in list_CoilNum)
    # 空列表也会输出 True
    # 也可以筛选 list_CoilNum = [x for x in list_CoilNum if x not in [None, ""]]
    # 还可以剔除长度低于8的整数字符串,和字符串前8位字符不是整数字符串的元素
    
    # 避免空列表
    # 空列表[-1], list index out of range
    # 字符串圆括号+字符串+字符串圆括号, 输出没有忽略字符串圆括号
    # 但实际应用该字符串时, 圆括号内单个字符串, 忽略圆括号
    if len(list_CoilNum) > 0:
        # 列表_卷号,个数n=len,第1~n个的索引是0~n-1
        statement = '('
        # 第1~倒数第2个的索引是0~n-1-1,即[0,n-1)
        for i in range(len(list_CoilNum)-1):
            statement += f"(CoilNumber like '%{list_CoilNum[i]}%') or "
        # 倒数第1个的索引是n-1
        # if len(list_CoilNum) == 1: 一个语句有两个括号, 不影响使用
        statement += f"(CoilNumber like '%{list_CoilNum[-1]}%'))"
    else:
        # DatabaseError: 不可以用None, f"{None}" == "{}".format(None) == "None"
        # DatabaseError: 不可以用""
        # 如果允许所有CoilNUm, 赋值statement = "1=1"
        # 如果筛选CoilNum缺失, 赋值statement = "CoilNumber is null"
        # 如果筛选CoilNum非缺失的全部行, 赋值statement = "CoilNumber is not null"
        # 不能使用 = null 或 <> null, 因为null表示未知值, 无法进行比较
        statement = "1=1"
    return statement

举报

相关推荐

0 条评论